我正在尝试使用Julia的GLM软件包。根据我在R中的经验,我一直喜欢它的simulate
函数
simulate(object, nsim = 1, seed = NULL, ...)
可以从拟合模型得出响应。朱莉娅中有没有类似的方法可以应用于其拟合的GLM模型?
答案 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
可以随时随地有效地生成所需的内容。