我想为我的面板数据运行回归。 我有以下格式的面板数据: 第1列有年份第2列有公司名称,第3列有权益变量
Year company name EQUITY
2006 A 12
2007 A 13
2008 A 23
2009 A 24
2010 A 13
2011 A 14
2012 A 12
2013 A 14
2014 A 14
2015 A 15
2006 B 221
2007 B 242
2008 B 262
2009 B 250
2010 B 400
2011 B 411
2012 B 420
2013 B 420
2014 B 422
2015 B 450
我有200家公司10年的数据。我想在几年(时间 - 10年)内回归每家公司的股权记录。我只想要斜率系数。 我希望我的输出像这样: 专栏1年第2栏 - 公司名称列3-beta值
Year company name slope(beta) p-value
2006 A beta value (assumed)
2007 A "
2008 A "
2009 A
2010 A
2011 A
2012 A "
2013 A
2014 A "
2015 A "
我的意思是每个公司的斜率系数。
答案 0 :(得分:1)
看不到你到目前为止所尝试的内容,所以这里是一个让你开始运行的解决方案。你绘制出来的最终输出并没有多大意义,因为每个公司都有一个斜率 - 而不是每个公司每年都有斜率。
这是用于运行回归的基本R版本。 by
用于分割数据,然后lm
用于估算。
res <- by(indata, indata$company, FUN=function(x) { coef(lm(log(EQUITY) ~ Year+0, data=x))} )
这导致斜率的以下输出,输出可用于绘图或列表
> res
indata$company: A
[1] 0.001344837
-------------------------------------------------------
indata$company: B
[1] 0.002896053
<强>更新强>
如果您想为每年的数据集添加斜率,可以添加
indata$slope <- res[indata$company]
给出了
> indata
Year company EQUITY slope
1 2006 A 12 0.001344837
2 2007 A 13 0.001344837
3 2008 A 23 0.001344837
4 2009 A 24 0.001344837
5 2010 A 13 0.001344837
6 2011 A 14 0.001344837
7 2012 A 12 0.001344837
8 2013 A 14 0.001344837
9 2014 A 14 0.001344837
10 2015 A 15 0.001344837
11 2006 B 221 0.002896053
12 2007 B 242 0.002896053
13 2008 B 262 0.002896053
14 2009 B 250 0.002896053
15 2010 B 400 0.002896053
16 2011 B 411 0.002896053
17 2012 B 420 0.002896053
18 2013 B 420 0.002896053
19 2014 B 422 0.002896053
20 2015 B 450 0.002896053