【发布时间】:2021-03-04 09:39:54
【问题描述】:
我正在尝试根据滚动回归公式计算环境复杂性的度量。 复杂度公式定义如下: 对于一个滚动的三年期,对于行业中的所有公司,年末的销售价值根据年初的销售价值进行回归。回归系数定义为环境复杂度。
这就是我遇到问题的地方:公司在几年之间增加和退出一个行业,使得回归方程中的初始 X 和 Y 在数量上不相等。
为了更好地说明这一点,给定以下示例数据集:
> set.seed(123)
> df <- data.table("Firm" = c("A","B","A","B","C","A","B","C","D","B","C","D","E","F"),
+ "Year" = c(1980,1980,1981,1981,1981,1982,1982,1982,1982,1983,1983,1983,1983,1983),
+ "Industry" = rep("I1",14),
+ "Sale" = sample(1000:1500,14))
> df
Firm Year Industry Sale
1: A 1980 I1 1414
2: B 1980 I1 1462
3: A 1981 I1 1178
4: B 1981 I1 1013
5: C 1981 I1 1194
6: A 1982 I1 1425
7: B 1982 I1 1305
8: C 1982 I1 1117
9: D 1982 I1 1298
10: B 1983 I1 1228
11: C 1983 I1 1243
12: D 1983 I1 1497
13: E 1983 I1 1373
14: F 1983 I1 1152
要衡量 1983 年的复杂性,我必须查看 1981-1983 年的时间跨度。但是,1983 年该行业有 5 家公司,1981 年有 3 家公司,它们之间只有两家共同公司(B 和 C)。 因此,要测量 1983 年的复杂性,我必须首先只选取公司 B 和 C,然后将它们在 1983 年(1228 和 1243)的销售价值回归到它们在 1981 年(1178 和 1013)的销售价值,这将导致系数0.08287293.
所需的输出应如下所示:
> df
Firm Year Industry Sale compx
1: A 1980 I1 1414 NA
2: B 1980 I1 1462 NA
3: A 1981 I1 1178 NA
4: B 1981 I1 1013 NA
5: C 1981 I1 1194 NA
6: A 1982 I1 1425 -2.50000
7: B 1982 I1 1305 -2.50000
8: C 1982 I1 1117 -2.50000
9: D 1982 I1 1298 -2.50000
10: B 1983 I1 1228 0.08287293
11: C 1983 I1 1243 0.08287293
12: D 1983 I1 1497 0.08287293
13: E 1983 I1 1373 0.08287293
14: F 1983 I1 1152 0.08287293
我为行业添加了一个变量,因为我想为每个行业迭代过程。 data.table 解决方案会很棒,因为我的数据集相当大。
非常感谢。
编辑:抱歉,我输入了错误的所需输出。现在已编辑。
【问题讨论】:
标签: r recursion datatable data.table rolling-computation