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

11

请问如何在使用混合效应模型时,在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 

2
这应该在crossvalidated.com上。 - Roman Luštrik
8
只是关于如何计算RMSE,那你可以翻译,对吗?(相对于“什么是混合模型适当的伪R ^ 2度量”,这肯定是需要交叉验证的,并且在http://glmm.wikidot.com/faq上进行了讨论) - Ben Bolker
2个回答

16
你没有提供你用于创建模型的具体函数,但它们通常使用相同的名称存储残差,您可以使用str()检查,RMSE可以从残差轻松计算:
#make a model
library(nlme)
r <- lme(conc ~ age, data=IGF)

#get the RMSE
r.rmse <- sqrt(mean(r$residuals^2))

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

r.rmse <- sqrt(mean(residuals(r)^2))

5
通常情况下,表现良好的建模函数应该实现一个 residuals() 方法,尽管在某些情况下需要注意返回的残差类型(如缩放残差、Pearson 残差、偏差残差、学生化残差等)。 - Ben Bolker
@BenBolker 什么样的残差最适合用于RMSE计算? - theforestecologist
这取决于你为什么要计算RMSE。你想如何解释它?这可能是一个CrossValidated的问题... - Ben Bolker

3

可以通过以下方式获得相同的结果:

library(nlme)
library(sjstats)

fit <- lmer(Yield  ~ Species + (1|Population/variety), data = df1,REML=T)
rmse(fit)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接