首页 > 解决方案 > Julia中R的模拟功能的模拟?

问题描述

我正在尝试使用 Julia 的 GLM 包。根据我在 R 中的经验,我一直很喜欢它的simulate功能

simulate(object, nsim = 1, seed = NULL, ...)

它从拟合模型中得出响应。Julia 中是否有任何类似的方法可以应用于其拟合的 GLM 模型?

标签: rjuliaglm

解决方案


AFAIK 没有这样的功能,但对于您的特殊情况,它应该相对容易实现。

以下是具有高斯(家族Normal())假设的未加权 OLS 示例:

function simulate(m, n=1)
    predict(m) .+ randn(Int(nobs(m)), n)*sqrt(deviance(m)/dof_residual(m))
end

这相当于 R 实现。

作为旁注:根据我的经验,而不是simulateR 中使用的分布通常意味着响应预测响应分布更有用,具体取决于您的需要。

编辑:

可能更朱利安的方法是避免生成样本,而是返回一个可以像这样采样的对象:

simdist(m) = Normal.(predict(m), sqrt(deviance(m)/dof_residual(m)))

现在您可以使用它rand来执行采样,例如:

sdm = simdist(m)
rand.(sdm)
rand.(sdm, 10)

这样,您通常可以避免分配大内存块。例如,如果您想nobs=10^9在 R 中使用,您很可能会耗尽内存,使用simdist您可以在旅途中有效地生成您需要的内容。


推荐阅读