使用Julia语言以csv格式导出线性混合效果模型输出

使用Julia语言以csv格式导出线性混合效果模型输出,julia,mixed-models,Julia,Mixed Models,我不熟悉Julia编程语言,但是,我正在拟合线性混合效果模型,我发现很难将固定和随机效果估计保存在.csv文件中 可以找到一个示例代码: using MixedModels @time modelOutput = fit(lmm(Y~ A + B + (0 + A | group), data)) 关于如何使用数据帧获得固定(fixef(modelOutput))和随机(ranef(modelOutput))效果,有可用的参考资料 谢谢你的建议。好的,我真的花了时间为你做了这件事。CoefTa

我不熟悉
Julia
编程语言,但是,我正在拟合
线性混合效果模型
,我发现很难将
固定
随机
效果估计保存在
.csv
文件中

可以找到一个示例代码:

using MixedModels
@time modelOutput = fit(lmm(Y~ A + B + (0 + A | group), data))
关于如何使用数据帧获得固定(
fixef(modelOutput)
)和随机(
ranef(modelOutput)
)效果,有可用的参考资料


谢谢你的建议。

好的,我真的花了时间为你做了这件事。
CoefTable
是在
statmodels
中定义的类型。根据这些信息,我们可以从
CoefTable
实例中提取相关信息,如下所示:

df = DataFrame(variable = ct.rownms,
               Estimate = ct.mat[:,1],
               StdError = ct.mat[:,2],
               z_val = ct.mat[:,3])

这将提供一个nvar-by-4
数据帧
,您可以按照前面所述使用
writetable(“output.csv”,df)将其写入csv
好的,实际上我花了时间为您做了这件事。
CoefTable
是在
statmodels
中定义的类型。根据这些信息,我们可以从
CoefTable
实例中提取相关信息,如下所示:

df = DataFrame(variable = ct.rownms,
               Estimate = ct.mat[:,1],
               StdError = ct.mat[:,2],
               z_val = ct.mat[:,3])

这将产生一个nvar-by-4
数据帧
,然后您可以按照前面所述使用
可写表(“output.csv”,df)将其写入csv
我在获得可接受的答案时遇到了一些问题;朱莉娅从那以后进化了很多。我主要根据来自的代码重写了它,并从其他来源进行了一些修改/拼凑

"""
    outfun(m, outfn="output.csv")

output the coefficient table of a fitted model to a file
"""
outfun = function(m, outfn="output.csv")
    ct = coeftable(m)
    coef_df = DataFrame(ct.cols);
    rename!(coef_df, ct.colnms, makeunique = true)
    coef_df[!, :term] = ct.rownms;
    CSV.write(outfn, coef_df);
end

我在工作中遇到了很多问题,无法得到公认的答案;朱莉娅从那以后进化了很多。我主要根据来自的代码重写了它,并从其他来源进行了一些修改/拼凑

"""
    outfun(m, outfn="output.csv")

output the coefficient table of a fitted model to a file
"""
outfun = function(m, outfn="output.csv")
    ct = coeftable(m)
    coef_df = DataFrame(ct.cols);
    rename!(coef_df, ct.colnms, makeunique = true)
    coef_df[!, :term] = ct.rownms;
    CSV.write(outfn, coef_df);
end


你能详细说明你的错误和一个最小的重复性例子吗?通常,
writetable(“output.csv”,df)
应该将数据写入csv文件,因为它位于数据帧中。然而,从GitHub页面上我得知,
ranef(m)
的输出实际上是一个简单的数组,而不是数据帧,那么您的问题与数据帧有什么关系呢?谢谢您的回答。如果我是正确的,随机效应是没有关于随机系数估计组的信息的数组。我还使用了
coetable(modelOutput)
选项,以便将其传递到
writetable
中,但是我得到了以下错误:writetable没有与writetable匹配的方法(::ascistring,::coettable),这是因为
coetable
不是名称所示的
数据帧。我不熟悉
随机模型.jl
,但将coettable的条目放入数据帧应该不难。我试图将coettable传入
数据帧,但也失败了。您能给出错误的详细信息,并给出一个最小的可重复示例吗?通常,
writetable(“output.csv”,df)
应该将数据写入csv文件,因为它位于数据帧中。然而,从GitHub页面上我得知,
ranef(m)
的输出实际上是一个简单的数组,而不是数据帧,那么您的问题与数据帧有什么关系呢?谢谢您的回答。如果我是正确的,随机效应是没有关于随机系数估计组的信息的数组。我还使用了
coetable(modelOutput)
选项,以便将其传递到
writetable
中,但是我得到了以下错误:writetable没有与writetable匹配的方法(::ascistring,::coettable),这是因为
coetable
不是名称所示的
数据帧。我不熟悉
随机模型.jl
,但要将coeftable的条目传递到数据帧中应该不难。我试图将coeftable传递到
数据帧中,但也失败了。谢谢您的回复。这是一种非常有用的方法。由于某种原因,第5列不起作用。实际上,我在abstractarray.jl:62的checkbounds中得到了以下内容:
coeftable(fitModelREML).mat[:,4]
ERROR:BoundsError()。有没有等效的方法导出随机效果的结果?正如错误所说,您正在访问coeftable out-bounds。由于我不知道您确切适合什么模型,我不知道您的coeftable中包含什么,但您只需执行
coeftable(fitModelREML).mat
并检查结果矩阵的尺寸,就可以找到您自己。也许你的表中没有p值列,那么你可以去掉我答案中的整行。顺便说一句,如果Stackoverflow的答案解决了您的问题,您应该接受它,使用绿色的勾号来标记这一点以供将来参考。我已经相应地编辑了代码,
lmm
模型似乎只输出三列(估计、标准误差和z值),非常感谢您的帮助。还有什么方法可以获得随机效果吗?我不熟悉混合模型,但从文档中可以使用
ranef(m)
提取它们,其中
m
是拟合模型
ranef
将只返回一个浮点数组。感谢您的回复。这是一种非常有用的方法。由于某种原因,第5列不起作用。实际上,我在abstractarray.jl:62的checkbounds中得到了以下内容:
coeftable(fitModelREML).mat[:,4]
ERROR:BoundsError()。有没有等效的方法导出随机效果的结果?正如错误所说,您正在访问coeftable out-bounds。由于我不知道您确切适合什么模型,我不知道您的coeftable中包含什么,但您只需执行
coeftable(fitModelREML).mat
并检查结果矩阵的尺寸,就可以找到您自己。也许有