我正在尝试使用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,则可以在旅途中高效地生成所需的内容。

08-19 23:55