R'的模拟;在Julia中模拟函数?

R'的模拟;在Julia中模拟函数?,r,julia,glm,R,Julia,Glm,我正在尝试使用Julia的GLM软件包。根据我在R的经验,我一直喜欢它的simulate功能 simulate(object, nsim = 1, seed = NULL, ...) 它从一个合适的模型中得到响应。Julia中有没有类似的方法可以应用于其拟合的GLM模型?AFAIK没有这样的函数,但对于您的特殊情况,应该相对容易实现它 以下是高斯(familyNormal())假设的未加权OLS示例: function simulate(m, n=1) predict(m) .+ ra

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

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

它从一个合适的模型中得到响应。Julia中有没有类似的方法可以应用于其拟合的GLM模型?

AFAIK没有这样的函数,但对于您的特殊情况,应该相对容易实现它

以下是高斯(family
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
您可以在移动中高效地生成所需内容