R数据分析:多水平模型详细说明

经常我们会听见随机效应模型,固定效应模型,混合效应模型呀,其实这些个东西都是多水平模型:

Multilevel models (also known as hierarchical linear models, linear mixed-effect model, mixed models, nested data models, random coefficient, random-effects models, random parameter models, or split-plot designs) are statistical models of parameters that vary at more than one level.

什么时候会用到多水平模型呢?

一般在处理嵌套数据的时候会用到多水平模型,此时该模型的分析单位通常是在较低层次上的个人,他们被嵌套在较高层次上的背景或综合单位中。比如个人嵌套在家庭,学生嵌套在学校,meta分析中每个研究对象嵌套在每个研究中。

还有就是纵向数据的处理,这个可以理解为时间嵌套在个人中,个人水平就成了高水平

尽管二层次模型是最常见的,多层次模型也可以用于具有多个层次的数据

今天就给大家写一个实际的该运用多水平模型进行数据分析的例子,我们在这个例子中就可以体会传统的回归模型和多水平模型的差异,以及该使用多水平模型却没有正确的使用时所造成的后果。

数据模拟

本文依然会给大家模拟一个非常容易理解的例子:

比如我们模拟出来3个变量:幸福感、GPA,朋友数量,这三个变量都是有关于大学生的,然后我们就感兴趣GPA和朋友数量是不是会影响大学生的幸福感。

我们还要把数据设置成嵌套的,我们让我们的大学生来自不同的学校,比如他们分别来自3个穷学校和3个富学校,这样的话,我们的就知道我们的学生是嵌套在学校中,那么对于这3个变量的分析就应该使用多水平模型。

看数据模拟的代码:

nrich=40
npoor=160
#规定参数
S.F.Rich=-2 
S.F.Poor=6 
S.G.Rich=.7
S.G.Poor=.7
# 富学校
# School 1
X1 <- rnorm(nrich, 10, 2) # 朋友数量
Z1 <- runif(nrich, 1.0, 4.0) # GPA
Y1 <- S.F.Rich*X1 + S.G.Rich*Z1 + 80 + rnorm(nrich, sd= 5) # 幸福感
# School 2
X2 <- rnorm(nrich, 10, 2) 
Z2 <- runif(nrich, 1.0, 4.0) 
Y2 <- S.F.Rich*X2 + S.G.Rich*Z2 + 75 + rnorm(nrich, sd= 5)
# School 3
X3 <- rnorm(nrich, 10, 2) 
Z3 <- runif(nrich, 1.0, 4.0) 
Y3 <- S.F.Rich*X3 + S.G.Rich*Z3 +90 + rnorm(nrich, sd= 5)

# 穷学校
# School 4
X4 <- rnorm(npoor, 5, 2) #朋友数量
Z4 <- runif(npoor, 1.0, 4.0) #GPA
Y4 <- S.F.Poor*X4 + S.G.Poor*Z4 + 35 + rnorm(npoor, sd = 10)
# School 5
X5 <- rnorm(npoor, 5, 2) 
Z5 <- runif(npoor, 1.0, 4.0) 
Y5 <- S.F.Poor*X5 + S.G.Poor*Z5 + 40 + rnorm(npoor, sd = 10)
# School 6
X6 <- rnorm(npoor, 5, 2) 
Z6 <- runif(npoor, 1.0, 4.0) 
Y6 <- S.F.Poor*X6 + S.G.Poor*Z6 + 50 + rnorm(npoor, sd = 10)

# 3个富学校的数据集:
Student.Data.School.1<-data.frame(Happiness=Y1, Friends=X1, GPA=Z1)
Student.Data.School.2<-data.frame(Happiness=Y2, Friends=X2, GPA=Z2)
Student.Data.School.3<-data.frame(Happiness=Y3, Friends=X3, GPA=Z3)
# 3个穷学校的数据集:
Student.Data.School.4<-data.frame(Happiness=Y4, Friends=X4, GPA=Z4)
Student.Data.School.5<-data.frame(Happiness=Y5, Friends=X5, GPA=Z5)
Student.Data.School.6<-data.frame(Happiness=Y6, Friends=X6, GPA=Z6)
#总的数据集
All.Schools.Data <- rbind(Student.Data.School.1, Student.Data.School.2, Student.Data.School.3, 
                          Student.Data.School.4, Student.Data.School.5, Student.Data.School.6) 

这个数据模拟看起来比较复杂,给大家解释一下:首先我们模拟出了3个富学校中的3个变量,这个3个富学校中因变量幸福感和自变量的区别就是关系的截距不一样,大家可以看到我分别在截距项上加了80,75,90。

然后模拟了3个穷学校中这三个变量的关系,此处有不同的也依然在截距中,我分别在截距项上加了35,40,50。

我们需要特别注意的就是我们富学校和穷学校之间的差异,在富学校中使用朋友数量和GPA来预测幸福感的时候,斜率分别为-2,0.7;但是在穷学校中斜率分别是6和0.7。

常规数据分析

我们知道这个数据是我们模拟的,我们知道穷学校和富学校的学生中朋友数量和幸福感的关系是不一样的。

但是你导师给你这个总的数据集,里面有6个学校的学生数据,让你探讨一下学生幸福感和朋友数量及GPA的关系,你会怎么做?

大部分不知道多水平模型的人,或者没有注意到学生是嵌套在学校中的,这些人肯定的做法是如下的线性回归:

All.Schools.Data$Friends.C<-scale(All.Schools.Data$Friends, scale = FALSE)[,]
All.Schools.Data$GPA.C<-scale(All.Schools.Data$GPA, scale = FALSE)[,]

Reg.Model<-lm(Happiness ~ Friends.C + GPA.C, data = All.Schools.Data)
summary(Reg.Model)

然后就得到如下的回归结果:

[图片上传失败...(image-712e07-1611476278089)]

根据这个结果我们可以说或者会说,朋友数量对幸福感有正向影响但是GPA对幸福感无影响。

有心的同学估计会说我们再按照学校进行亚组分析看看

我们首先设置两个变量,一个是学生ID,另一个是学校

All.Schools.Data$StudentID<-seq(1:nrow(All.Schools.Data))

All.Schools.Data$School<-c(rep(1, nrich), rep(2,nrich), rep(3, nrich), rep(4, npoor), 
                           rep(5, npoor), rep(6, npoor))

我们知道前三个是富学校后三个是穷学校,此时我们就可以进行学校的亚组分析:

School.Rich.Reg.Model<-lm(Happiness ~ Friends.C + GPA.C, 
                          data = subset(All.Schools.Data, School<4))
summary(School.Rich.Reg.Model)

School.Poor.Reg.Model<-lm(Happiness ~ Friends.C + GPA.C, 
                          data = subset(All.Schools.Data, School>3))
summary(School.Poor.Reg.Model)

[图片上传失败...(image-293e70-1611476278089)]

可以看到此亚组分析的结果依然不一致,在富学校中只有朋友数量对幸福感有负向的预测作用,在穷学校中朋友数量和GPA对幸福感都有正向的预测作用,看见没,和总体数据集的结果就矛盾了。

所以我们的研究问题依然没有能够正确地回答,朋友数量和GPA对幸福感的影响究竟是怎么样的呢?

多水平模型

看了错误的分析方法后,我们再看正确的分析方法,因为我们明白学生是嵌套在学校中的,我们有必要将学校间的变异和校内的变异分开来看,往多水平模型上考虑:

Null<-lmer(Happiness ~ 1 # 纯截距模型
                  +(1|School), # 每个学校都有自己的截距
                  data=All.Schools.Data, REML = FALSE)
summary(Null)

我们首先建立了一个纯截距模型,就是说有可能朋友数量和GPA对幸福感其实是没作用的,然后我们来检验这个模型的组内相关系数ICC

ICC.Model<-function(Model.Name) {
  tau.Null<-as.numeric(lapply(summary(Model.Name)$varcor, diag))
  sigma.Null <- as.numeric(attr(summary(Model.Name)$varcor, "sc")^2)
  ICC.Null <- tau.Null/(tau.Null+sigma.Null)
  return(ICC.Null)
}

ICC.Model(Null)

ICC要回答的问题就是更高的水平究竟所占的变异有多大,如果这个变异显著的大于0那么就应该用多水平模型。

The ICC measures the degree of clustering in our data and answers the question, “How much does my Level 2 predict the total variance of my study?” If your ICC is greater than 0, you have a multi-level study

运行上面的代码,我们可以得到本研究中ICC为0.20617,我们需要使用多水平模型。

首先我们只考虑学校水平的截距:

The.Model.1<-lmer(Happiness ~ GPA.C 
                  +(1|School),
                data=All.Schools.Data, REML = FALSE)
summary(The.Model.1)
R数据分析:多水平模型详细说明

得到的结果为控制了学校水平的波动后,GPA其实对幸福感无影响。

进一步的我们可以考虑学校水平上学生的朋友数量可以变化(随机斜率):

The.Model.2<-lmer(Happiness ~ Friends.C + GPA.C 
                  +(1+Friends.C|School), # 幸福感随着学校的不同而不同,而且朋友数量和学校有关
                  #朋友数量是学校的方程
                data=All.Schools.Data, REML = FALSE)
summary(The.Model.2)

[图片上传失败...(image-c6d5bd-1611476278089)]

那么此时的结果为:控制了学校水平的随机效应后,朋友数量对幸福感其实是没有影响的。

在这个例子中我们得到的GPA的系数并不等于0.7,是因为每个学校水平朋友数量抽走变异是不一样的,最终我们的结论应该是朋友数量对幸福感无影响,其实也是可以理解的,在富学校中这个关系是朋友越多幸福感越若,在穷学校中朋友越多幸福感越强,推广到一般的学生中其实朋友对幸福感的影响并没有显著意义,之所以不同学校结果不一样是因为学校本身的随机效应。

到这儿你就可以给你的导师说,朋友数量对幸福感无关。

小结

今天给大家写了多水平模型的例子,感谢大家耐心看完。发表这些东西的主要目的就是督促自己,希望大家关注评论指出不足,一起进步。内容我都会写的很细,用到的数据集也会在原文中给出链接,你只要按照文章中的代码自己也可以做出一样的结果,一个目的就是零基础也能懂,因为自己就是什么编程基础没有从零学Python和R的,加油。数据分析问题咨询,代处理请私信(spss,R,Mplus)。

(站外链接发不了,请关注后私信回复“数据链接”获取本头条号所有使用数据)

往期内容:

从“我丑到我自己了”说起——混合效应模型续

重复测量数据分析系列:混合效应模型基础

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,236评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,867评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,715评论 0 340
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,899评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,895评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,733评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,085评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,722评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,025评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,696评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,816评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,447评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,057评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,009评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,254评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,204评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,561评论 2 343

推荐阅读更多精彩内容