Page 1 of 1

Variance Decomposition

Posted: Fri Nov 27, 2020 11:12 pm
by lmcrace97

I am running into some trouble with a model and looking for some assistance.

I come from organizational studies and my goal is to figure out how much of the variance in firm ESG performance is attributable to different “effects” (e.g. Firm Effect vs Regional Effect). I essentially have a panel data set with firms measured across years. Much older studies regarding financial performance have used ANOVA . Multilevel modeling as random effects is relatively more recent to the area.

For my analysis ESG score is my dependent variable instead of financial performance and I have 6 “effects” I’d like to capture.

-CEO (There are more CEOs than firms for when Executives turnover)
-Business Segments (Every firm must by design be in at least two segments and these are in the data set as unique columns)

I do not know how to model this effectively. I think I need cross-classification and I assume I also need multiple memberships. STATA’s built in features were unsuccessful which led me to this wonderful place. However, so far I have still been largely unsuccessful.

I must confess that I am a new PhD student and am quite “in over my head”. I had foolishly thought the process would just be a more advanced ANOVA, but I have certainly found it far more complex.

My sincere appreciation for any assistance you can provide!

Re: Variance Decomposition

Posted: Thu Dec 03, 2020 1:46 pm
by billb
Hi Lmcrace,
Yes it sounds like you may have cross classifications and multiple memberships. My only question would be whether these different 'effects' are all identifiable and how big your data is. For example I can think in education of a dataset with kids nested within classes and teachers but if each teacher teaches 1 class then there is confounding of the 2 sources of variation in the design. You may find that here particularly with CEO and Firm. Also depending on how many units you have in your dataset for each classification it may be hard to fit them e.g. if you have say 3 years then you will need to use fixed effects as it is unlikely that you can estimate the between year variability with just 3 years.
My tip would be to try and create your dataset with a column containing the response and then try and construct the various classification columns.
Best wishes,

Re: Variance Decomposition

Posted: Fri Dec 04, 2020 2:58 am
by lmcrace97
Hi Bill ! My appreciation for your response!

My sample size is actually pretty large. There are over 2000 firms and over 3000 CEOS and 11 years of data so that part is probably okay.

So far I have done the following:

First I have run a model in “lme4” in R. In this model “State” and “Year” are not nested and the nested portion of the model looks like Industry -> Firm -> CEO.

R Code:
lmer(data = data, REML = T, ESG ~ (1|Year) + (1|State) + (1| Industry/id/ExecId))

Using runmlwin I have built a markov chain monte carlo model using the mcmc(cc) specification to cross classify the model. It returns very similar results as the model in lme4 which I think is a good test of the results.

MLwiN Code:
runmlwin ESG cons, level6(Year: cons) level5(State: cons) level4(Industry: cons)
> level3(id: cons) level2(ExecId: cons) level1(cons:cons) mcmc(cc) initsprevious

First, do you see any problems with my specifications? Second, in neither of these models do I seem capable of adding business segments since the variable cannot be measured in a single column. Any thoughts on this ?

Re: Variance Decomposition

Posted: Fri Dec 04, 2020 9:49 am
by billb
Sounds good and great that you get similar results to lme4. I think as long as you ensure you have unique ids everything will be fine i.e. not using the Execid number for different indiviudals in different Industries. I would then take a look at how multiple-membership works in MLwiN as you will require several columns (as many as the maximum numbers of segments for any observation) to represent the segments with a corresponding set of weight columns to represent the relative weights of each segment. I am more familiar with doing this in MLwiN directly but am sure that the R2MLwiN interface will also work here.
Best wishes,