在Julia中模拟R的模拟功能?

时间:2018-07-29 07:04:10

标签: r julia glm

我正在尝试使用Julia的GLM软件包。根据我在R中的经验,我一直喜欢它的simulate函数

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

可以从拟合模型得出响应。朱莉娅中有没有类似的方法可以应用于其拟合的GLM模型?

1 个答案:

答案 0 :(得分:1)

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

以下是不加加权的OLS的示例,假设高斯(族Normal()):

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

等效于R实现。

请注意:根据我的经验,根据simulate在R中使用的分布,通常平均响应预测响应分布根据您需要什么。

编辑:

一种可能是朱利安式的方法是避免生成示例,而是返回一个可以从中进行采样的对象,如下所示:

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

现在您可以使用rand进行采样了,例如:

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

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