r - R 中的循环 - 回归

标签 r statistics

我刚刚开始使用 R 进行统计分析,而且我还在学习。我在 R 中创建循环时遇到问题。我有以下案例,我想知道是否有人可以帮助我。对我来说,这似乎是不可能的,但对你们中的一些人来说,这只是小菜一碟。我有不同年份不同公司的数据集。对于每一家公司,我在同一年都有不同的观察结果,我需要每年对每家公司进行以下回归(我有 1000 多家公司,似乎不可能分别对每家公司进行回归): Ri = α0 + β1Rm + β2Rz + Ɛ

the data I have looks like the following example:
Year   Firm    Ri    Rm    Rz
2009   A       30    55    85
2009   A       11    55    85
2009   A       1     55    85
2010   A       7     55    85
2010   A       15    55    85
2011   A       20    55    85
2011   A       3.5   55    85
2011   A       8     55    85
2009   B       24    55    85
2009   B       30    55    85
2009   B       25    55    85
2010   B       5.2   55    85
2010   B       11.8  55    85
2011   B       78    55    85
2011   B       90    55    85
2011   B       57    55    85

我需要获得每家公司每年的 B1、B2 和误差项Ɛ。就像这样:

Year Firm       B1    B2    Ɛ
2009   A       0.30  0.55  0.85
2010   A       0.11  0.55  0.85
2011   A       0.1   0.55  0.85
2009   B       0.7   0.55  0.85
2010   B       0.15  0.55  0.85
2011   B       0.20  0.55  0.85

预先感谢您的帮助

最佳答案

您可以使用循环和子集来执行此操作,但您也可以像这样使用 mapply。 (我制作了一个更大的数据集以便能够正确演示)。

Year <- sort(rep.int(2009:2011, 30))
Firm <- gl(n = 2, k = 15, length = 90, labels = c('A', 'B'))
dta <- data.frame(Year, Firm, Ri = rnorm(90, 5, 2), Rm = rnorm(90, 2, 1), Rz = rnorm(90, -1, 0.5))

filt <- expand.grid(unique(dta$Year), unique(dta$Firm))

op <- mapply(function(x, y) lm(Ri ~ Rm + Rz, data = dta, subset = Year == x & Firm == y), 
             filt$Var1, filt$Var2, SIMPLIFY = FALSE)

sapply(op,coef)

关于r - R 中的循环 - 回归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37216459/

相关文章:

r - 在 R 中,为每一行找到包含字符串的列

excel - 在Excel中计算矛兵排名统计的p值(使用或不使用vb​​a)

r - 在R中计算R2(R平方)的函数

python - 如何使用 numpy.histogram 计算概率,然后用它来计算 KL 散度?

java - 根据回归方程的参数估计值计算概率

Python:计算 numpy 数组(大数据集)中出现次数的更快方法

R TM 包。在哪里可以找到 TermDocumentMatrix 组件的详细说明?我、j、v

r - 如何将 S4 插槽选择器 `@` 重载为通用函数

r - 根据另一列的条件删除一列中重复的行

r - 为什么在 R Notebook 中设置工作目录不会更改控制台中的工作目录?