Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.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中从glm和lmer中提取的残差方差_R_Variance - Fatal编程技术网

在R中从glm和lmer中提取的残差方差

在R中从glm和lmer中提取的残差方差,r,variance,R,Variance,我试图将我所读到的关于多层次建模的内容与我所知道的R中的glm进行合并。我现在使用的是来自 我已经完成了一些编码,如下所示: library(lme4) library(ggplot2) setwd("~/Documents/r_code/multilevel_modelling/") rm(list=ls()) oxford.df <- read.fwf("oxboys/OXBOYS.DAT",widths=c(2,7,6,1)) names(oxford.df) <- c(

我试图将我所读到的关于多层次建模的内容与我所知道的R中的
glm
进行合并。我现在使用的是来自

我已经完成了一些编码,如下所示:

library(lme4)
library(ggplot2)

setwd("~/Documents/r_code/multilevel_modelling/")

rm(list=ls())

oxford.df <- read.fwf("oxboys/OXBOYS.DAT",widths=c(2,7,6,1))
names(oxford.df) <- c("stu_code","age_central","height","occasion_id")
oxford.df <- oxford.df[!is.na(oxford.df[,"age_central"]),]
oxford.df[,"stu_code"] <- factor(as.character(oxford.df[,"stu_code"]))
oxford.df[,"dummy"] <- 1

chart <- ggplot(data=oxford.df,aes(x=occasion_id,y=height))
chart <- chart + geom_point(aes(colour=stu_code))

# see if lm and glm give the same estimate
glm.01 <- lm(height~age_central+occasion_id,data=oxford.df)
glm.02 <- glm(height~age_central+occasion_id,data=oxford.df,family="gaussian")
summary(glm.02)
vcov(glm.02)
var(glm.02$residual)
(logLik(glm.01)*-2)-(logLik(glm.02)*-2)
1-pchisq(-2.273737e-13,1)
# lm and glm give the same estimation
# so glm.02 will be used from now on

# see if lmer without level2 variable give same result as glm.02
mlm.03 <- lmer(height~age_central+occasion_id+(1|dummy),data=oxford.df,REML=FALSE)
(logLik(glm.02)*-2)-(logLik(mlm.03)*-2)
# 1-pchisq(-3.408097e-07,1)
# glm.02 and mlm.03 give the same estimation, only if REML=FALSE
您可以看到,
随机效应
部分中的残差存在方差,我从Jos W.R.Twisk的
应用多水平分析-实践指南
中读到,这表示模型中的“未解释方差”量

我想知道是否可以从
glm.02
得出相同的剩余方差,因此我尝试了以下方法:

> var(resid(glm.01))
[1] 64.98952
> sd(resid(glm.01))
[1] 8.061608

结果与
mlm.03
输出略有不同。这是否与
mlm.03
中所述的相同“剩余方差”有关?

您的
glm.02
glm.01
使用最小二乘法估计简单线性回归模型。另一方面,
mlm.03
是一个通过最大似然估计的线性混合模型。 我不知道您的数据集,但看起来您使用
dummy
变量在2级创建了一个方差为零的集群结构

所以你的问题基本上有两个答案,但在你的案例中只有第二个答案是重要的。模型
glm.02
mlm.03
不包含相同的剩余方差估计,因为

  • 模型通常不同(混合效应与经典回归)。然而,在您的例子中,
    dummy
    变量似乎抑制了混合模型中的额外方差分量。所以对我来说,模型似乎是平等的

  • 用于估计残差方差的方法不同
    glm
    在代码中使用LS,
    lmer
    在代码中使用ML。剩余方差的ML估计值略有偏差(导致方差估计值较小)。这可以通过使用REML而不是ML来估计方差分量来解决

  • 然而,对于似然比测试来说,使用经典ML(而不是REML)仍然是必要且正确的。使用REML比较这两种可能性是不正确的


    干杯

    您的
    glm.02
    glm.01
    使用最小二乘法估计一个简单的线性回归模型。另一方面,
    mlm.03
    是一个通过最大似然估计的线性混合模型。 我不知道您的数据集,但看起来您使用
    dummy
    变量在2级创建了一个方差为零的集群结构

    所以你的问题基本上有两个答案,但在你的案例中只有第二个答案是重要的。模型
    glm.02
    mlm.03
    不包含相同的剩余方差估计,因为

  • 模型通常不同(混合效应与经典回归)。然而,在您的例子中,
    dummy
    变量似乎抑制了混合模型中的额外方差分量。所以对我来说,模型似乎是平等的

  • 用于估计残差方差的方法不同
    glm
    在代码中使用LS,
    lmer
    在代码中使用ML。剩余方差的ML估计值略有偏差(导致方差估计值较小)。这可以通过使用REML而不是ML来估计方差分量来解决

  • 然而,对于似然比测试来说,使用经典ML(而不是REML)仍然是必要且正确的。使用REML比较这两种可能性是不正确的


    干杯

    这个问题在这里是离题的(应该在stackoverflow上),所以我投票决定关闭,但您可以访问与
    attr(VarCorr(mlm.03),“sc”)^2
    匹配的
    lmer
    模型的剩余方差,因为您的模型名为
    mlm.03
    。使用
    VarCorr()
    函数可以访问其他方差分量。这个问题在这里是离题的(应该在stackoverflow上),所以我投票决定关闭,但您可以访问
    lmer
    模型中与
    attr(VarCorr(mlm.03),“sc”)^2
    匹配的剩余方差,因为您的模型名为
    mlm.03
    。可以使用
    VarCorr()
    函数访问其他方差分量。
    > var(resid(glm.01))
    [1] 64.98952
    > sd(resid(glm.01))
    [1] 8.061608