Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 提取lme模型拟合中每个单元的系数及其标准误差_R_Mixed Models_Nlme_Coefficients - Fatal编程技术网

R 提取lme模型拟合中每个单元的系数及其标准误差

R 提取lme模型拟合中每个单元的系数及其标准误差,r,mixed-models,nlme,coefficients,R,Mixed Models,Nlme,Coefficients,在线性混合模型中,我如何提取系数(b0和b1),以及每个实验单元(图)的各自标准误差,例如: 使用相同的数据集(df)和拟合模型(fitL1):我如何获得与此相同的数据帧 plot b0 b0_se b1 b1_se 1 2898.69 53.85 -7.5 4.3 ... ... ... ... ... 第一个评论是,这实际上是一个非常重要的理论问题:有一个相当于深入到一些技术细节的问题;你一定

在线性混合模型中,我如何提取系数(b0和b1),以及每个实验单元(图)的各自标准误差,例如:

使用相同的数据集(df)和拟合模型(fitL1):我如何获得与此相同的数据帧

   plot    b0      b0_se   b1    b1_se 
    1    2898.69   53.85   -7.5  4.3

   ...    ...       ...     ...   ...

第一个评论是,这实际上是一个非常重要的理论问题:有一个相当于深入到一些技术细节的问题;你一定要看一看,尽管有点吓人。基本问题是,每组的估计系数值是固定效应参数和该组的BLUP/条件模式的总和,这是不同类别的对象(一个是参数,一个是随机变量的条件平均值),这造成了一些技术困难

第二点是(不幸的)我不知道在
lme
中有什么简单的方法可以做到这一点,所以我的答案使用
lmer
(来自
lme4
包)

如果您愿意做最简单的事情,忽略固定效果参数和BLUP之间的协方差(可能定义不清),您可以使用下面的代码

两个备选方案是:(1)使用贝叶斯分层方法(例如
MCMCglmm
包)拟合模型,并计算每个级别的后验预测标准偏差(2)使用参数自举计算BLUP/条件模式,然后取bootstrap分布的标准差

请记住,与往常一样,此建议不提供任何担保。

library(lme4)
fm1 <- lmer(Reaction ~ Days + (Days | Subject), sleepstudy)
cc <- coef(fm1)$Subject
## variances of fixed effects
fixed.vars <- diag(vcov(fm1))
## extract variances of conditional modes
r1 <- ranef(fm1,condVar=TRUE)
cmode.vars <- t(apply(cv <- attr(r1[[1]],"postVar"),3,diag))
seVals <- sqrt(sweep(cmode.vars,2,fixed.vars,"+"))
res <- cbind(cc,seVals)
res2 <- setNames(res[,c(1,3,2,4)],
                 c("int","int_se","slope","slope_se"))
##          int   int_se     slope slope_se
## 308 253.6637 13.86649 19.666258   2.7752
## 309 211.0065 13.86649  1.847583   2.7752
## 310 212.4449 13.86649  5.018406   2.7752
## 330 275.0956 13.86649  5.652955   2.7752
## 331 273.6653 13.86649  7.397391   2.7752
## 332 260.4446 13.86649 10.195115   2.7752
库(lme4)

fm1使用nlme让您中途到达那里

您可以使用以下方法提取summary()的组件:

等等

您可以按行进一步细分这些子集:

summary(fitL1)$tTable[1,1] #the first fixed-effect parameter estimate
summary(fitL1)$tTable[1,2] #the first fixed-effect parameter standard error
提取单个参数或标准误差并将其组合到数据框中,例如:

df<-data.frame(cbind(summary(fitL1)$tTable[1,1], summary(fitL1)$tTable[1,2]))
names(df)<-c("Estimate","SE")
df

并将其添加到参数估计中(B0(截距)、B1等)。但是,我不确定如何调整每个绘图的标准误差。

Excellent@Ben!这就是我所寻找的…我将在该网站上查看。两个问题:1)每个分组级别的SE是否始终相同,或者是否存在每个分组级别的SE值不同的模型?(换句话说:只返回一个截距SE值和一个斜率SE值是否足够)2)这是否也适用于
glmer
df<-data.frame(cbind(summary(fitL1)$tTable[1,1], summary(fitL1)$tTable[1,2]))
names(df)<-c("Estimate","SE")
df
fitL1$coefficients$random