我正在尝试阅读有关多级建模的内容,并将其与我对R中glm
的了解合并。我现在使用here中的高度增长数据。
我做了一些如下所示的编码:
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
mlm.03
给出了以下输出:
> mlm.03
Linear mixed model fit by maximum likelihood
Formula: height ~ age_central + occasion_id + (1 | dummy)
Data: oxford.df
AIC BIC logLik deviance REMLdev
1650 1667 -819.9 1640 1633
Random effects:
Groups Name Variance Std.Dev.
dummy (Intercept) 0.000 0.0000
Residual 64.712 8.0444
Number of obs: 234, groups: dummy, 1
Fixed effects:
Estimate Std. Error t value
(Intercept) 142.994 21.132 6.767
age_central 1.340 17.183 0.078
occasion_id 1.299 4.303 0.302
Correlation of Fixed Effects:
(Intr) ag_cnt
age_central 0.999
occasion_id -1.000 -0.999
您可以看到random effect
部分中的残差存在方差,我从{WRK Twisk的Applied Multilevel Analysis - A Practical Guide
读取,这表示“原因不一致”的数量与模型。
我想知道我是否可以从glm.02
得到相同的剩余差异,所以我尝试了以下内容:
> var(resid(glm.01))
[1] 64.98952
> sd(resid(glm.01))
[1] 8.061608
结果与mlm.03
输出略有不同。这是指mlm.03
中所述的相同“残差方差”吗?
答案 0 :(得分:0)
您的glm.02
和glm.01
使用最小二乘估计一个简单的线性回归模型。另一方面,mlm.03
是通过最大似然估计的线性混合模型。
我不知道您的数据集,但看起来您使用dummy
变量在第2级创建了一个零方差的群集结构。
所以你的问题基本上有两个答案,但只有第二个答案在你的情况下很重要。模型glm.02
和mlm.03
不包含相同的残差方差估计,因为...
模型通常不同(混合效果与经典回归)。但是,在您的情况下,dummy
变量似乎会压缩混合模型中的其他方差组件。所以对我来说模特似乎是平等的。
用于估计残差方差的方法是不同的。 glm
使用LS,lmer
在您的代码中使用ML。残差方差的ML估计略有偏差(导致方差估计较小)。这可以通过使用REML而不是ML来估计方差分量来解决。
然而,使用经典ML(而不是REML)对于似然比检验仍然是必要且正确的。使用REML,两种可能性的比较是不正确的。
干杯!