我正在尝试使用Julia的GLM软件包。根据我在R中的经验,我一直喜欢它的simulate
函数
simulate(object, nsim = 1, seed = NULL, ...)
从拟合模型中得出响应。朱莉娅中有没有类似的方法可以应用于其拟合的GLM模型?
最佳答案
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
使用的分布,通常意味着响应或预测响应分布根据您的需要更有用。编辑:
可能是朱利安时代的一种更好的实现方式是避免生成样本,而是返回一个可以从中进行采样的对象,如下所示:
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
,则可以在旅途中高效地生成所需的内容。