我编写了一个代码,用于在R
中使用Delta方法计算效果我的数据框dpcp
包含变量x1
,x2
,x3
,x4
以及来自多元法线的1000个绘制矩阵{{ 1}}。
此代码计算效果,但运行时间很长。
如何更快地运行它:
m4[1000,4]
即使2000次观察,代码目前也需要5个小时。
答案 0 :(得分:0)
您可能需要先检查this。但是,为了加快计算速度,只需使用矩阵乘法而不是循环
marg_effects <- as.matrix(dpcp) %*% t(m4)
%*%
运算符用于矩阵乘法,t()
函数用于转置m4
希望这会有所帮助。
答案 1 :(得分:0)
代码运行缓慢的一个原因是您没有预先指定marg_effects[i, j]
矩阵。因此,每次运行必须向矩阵添加一个新行,这在计算上非常有效。首先定义矩阵应该可以缩短运行时间:
n = nrow(dpcp)
marg_effects <- matrix(nrow = n, ncol = 1000)
for (i in 1: n) {
for (j in 1: 1000) {
marg_effects[i, j] = (m4[j, 1] * dpcp[i, ] $x1) + (m4[j, 2] * dpcp[i, ] $x2)+ (m4[j, 3] * dpcp[i, ] $x3) + (m4[j, 4] * dpcp[i, ] $x4)
}
}