R - 混合效应模型中的均方根误差

hn.*_*ong 8 r

你可以告诉我如何在执行混合效果模型时获得/计算R中的RMSE值(均方根误差)

Data: na.omit(binh) 
       AIC      BIC    logLik
  888.6144 915.1201 -436.3072

Random effects:
 Formula: ~1 | Study
        (Intercept) Residual
StdDev:    3.304345 1.361858

Fixed effects: Eeff ~ ADF + CP + DE + ADF2 + DE2 
                Value Std.Error  DF   t-value p-value
(Intercept)  -0.66390 18.870908 158 -0.035181  0.9720
ADF           1.16693  0.424561 158  2.748556  0.0067
CP            0.25723  0.097524 158  2.637575  0.0092
DE          -36.09593 12.031791 158 -3.000046  0.0031
ADF2         -0.03708  0.011014 158 -3.366625  0.0010
DE2           4.77918  1.932924 158  2.472513  0.0145
 Correlation: 
     (Intr) ADF    CP     DE     ADF2  
ADF  -0.107                            
CP   -0.032  0.070                     
DE    0.978 -0.291 -0.043              
ADF2  0.058 -0.982 -0.045  0.250       
DE2  -0.978  0.308  0.039 -0.997 -0.265

Standardized Within-Group Residuals:
        Min          Q1         Med          Q3         Max 
-2.28168116 -0.45260885  0.06528363  0.57071734  2.54144168 

Number of Observations: 209
Number of Groups: 46 
Run Code Online (Sandbox Code Playgroud)

Mat*_*agg 14

您没有详细说明用于制作模型的函数,但它们倾向于使用您可以检查的相同名称存储其残差,并且可以str()从残差中轻松计算RMSE:

#make a model
library(nlme)
r <- lme(conc ~ age, data=IGF)

#get the RMSE
r.rmse <- sqrt(mean(r$residuals^2))
Run Code Online (Sandbox Code Playgroud)

在下面的评论中,Ben Bolker指出模型拟合函数生成的对象应该有一个残差方法,这样就可以做到这一点(尽管某些类型的模型可能会返回已经转换的残差):

r.rmse <- sqrt(mean(residuals(r)^2))
Run Code Online (Sandbox Code Playgroud)

  • 更一般地说,表现良好的建模函数应该实现一个`residuals()`方法,尽管在某些情况下你必须要小心谨慎地返回什么类型的残差(缩放,Pearson,偏差,学生化... ) (4认同)