我在试着用Julia的GLM包。根据我在R中的经验,我一直很喜欢它的simulate
函数
simulate(object, nsim = 1, seed = NULL, ...)
它从拟合的模型中得出响应。Julia中有没有类似的方法可以应用于其拟合的GLM模型?
发布于 2018-07-30 08:08:52
AFAIK没有这样的函数,但对于您的特殊情况,实现它应该相对容易。
以下是使用高斯(族Normal()
)假设的未加权OLS的示例:
function simulate(m, n=1)
predict(m) .+ randn(Int(nobs(m)), n)*sqrt(deviance(m)/dof_residual(m))
end
这等同于R实现。
作为附注:根据我的经验,R中的simulate
使用的分布通常意味着响应或预测的响应分布更有用,这取决于您的需求。
编辑:
可能一种更具Julian风格的方法是避免生成样本,而是返回一个可以从中采样的对象,如下所示:
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
,你可以在旅途中高效地生成你需要的东西。
https://stackoverflow.com/questions/51578046
复制相似问题