使用R

时间:2016-07-15 18:20:17

标签: r

我编写了一个代码,用于在R

中使用Delta方法计算效果

我的数据框dpcp包含变量x1x2x3x4以及来自多元法线的1000个绘制矩阵{{ 1}}。

此代码计算效果,但运行时间很长。

如何更快地运行它:

m4[1000,4]

即使2000次观察,代码目前也需要5个小时。

2 个答案:

答案 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)
    }
}