第1个回答 2021-03-28
今天我们来聊一聊如何使用stata实现HLM(分层线性模型)。HLM=Hierarchical Linear Model,这里译作分层线性模型,它还有很多别的名字,比如多层混合效应线性模型、多水平模型、混合线性模型等等。
首先,先解释一下为什么要使用分层线性模型,线性模型如OLS大家一定都不陌生,所谓“分层”就是通过多个线性模型,将数据的高低/大小/内外关系展现出来。举个栗子,如果我们想使用CEPS中国教育追踪调查数据,研究影响学生学业成绩的因素,由于CEPS包含了来自学生、班级、学校不同层面的各种调查内容,我们会很自然地想使用OLS回归建立一个关于学业成绩的回归方程,这个方程将纳入学生、班级、学校等层面的控制变量,但这样做可能存在一个问题:同一个班级学生学业成绩的相关度可能比不同班级学生学业成绩的相关度大,因为他们身处同样的班级教育环境;同一个学校学生学业成绩的相关度可能比不同学校学生学业成绩的相关度大,因为院校可能在入学时对学生进行了筛选,且同一个学校奉行同样的办学理念等。虽然使用OLS回归时可以使用cluster(group)进行分组减少偏差,但面对更多的层级和更为复杂的影响因素(尤其是在不同层面上影响因素不同时)时,使用HLM分层线性模型就展现出了优越性。
下面我们将通过stata的具体操作语句来解释HLM的原理:stata的主要命令是mixed
在操作之前,请务必确定研究数据有不同的层面,且不同的层面有相应的识别ID。
1.建立零模型,判断是否要使用HLM。有些数据虽然包含了不同层面,如班级和学生,但是班级间的差异并不大,因此可以认为学生来自于同样的班级,这时就无需使用HLM,直接使用OLS即可。
零模型: [公式]
普通OLS: [公式]
scoreij表示个体i在j班级的学业成绩,零模型与OLS的区别就在于零模型中多了u0j这样一个随机项,u0j可以解释为第二层班级对学生学业成绩的影响,eij代表学生层面的扰动项。
在stata中,零模型的语句是:mixed score || classid:,mle variance nostderr
OLS的语句是:mixed score,mle variance nostderr
通过这两个语句可以得到两个mixed-effects ML regression,可以比较Log Likelihood的值,决定是否要选择HLM,LR=2(零模型的log likelihood值-OLS的log likelihood值),自由度是1,如果这个值大于了3.84,则应当使用HLM。或者,可以观察零模型语句后输出结果的最后一行,有一个LR test vs. linear regression,如果这里的卡方检验显著,则推荐使用HLM。需要注意的是,零模型不显著可能是受到了部分变量遮蔽效应的影响,因此在卡方检验不显著时是否使用零模型还需进一步判断研究