线性混合模型简介
混合线性模型(mixed linear model)是一种方差分量模型。在方差分量模型中,把既含有固定效应,又含有随机效应的模型,称为混合线性模型 【信息来源:百度】 一般线性模型中仅包含固定效应和噪声两项影响因素,也就是不会考虑随机因素对模型的影响。 数据集:R的MASS包中oast数据集 数据解释 : 通过三个品种四个水平的施肥处理,对燕麦进行了小区试验。实验分为6个区块,每个区块分为4个子区块。主小区采用品种,次小区采用施肥处理。 线性模型是需要求出关于在因变量上的权重(斜率),那么针对分类型的因变量要怎么计算呢?——创建虚拟变量代替我们的分类水平进行运算。虚拟变量
因变量属于分类变量,所以在建立模型之前需要创建虚拟变量:虚拟变量的作用就是对固定因子的因子进行量化。例如:在varieties中有三种不同的品种分别为:Golden.rain、Marvellous、Victory,可以通过R的contrasts()函数查看或设置不同品种的虚拟变量。
默认采用treatment编码方式,每一列的求和等于1,至于为什么Golden.rain该行全都是0,因为默认情况下,第一行是其他组的参照组。注:若是采用sum编码方式:每一列的求和等于0。
展示一下treatment编码方式和sum编码方式。注:contr.sum是定义无序因子的,若为有序可以采用contr.poly来定义。
例如:在3水平的因子变量上展示
同理nitrogen变量的虚拟变量编码方式如下:
观察两张图片可以得到关于虚拟变量创建的规律:1、对于某一个因子型变量包含K个水平的因子,那么会产生K-1个对比向量;
2、对比向量以一个K行*(K-1)列的矩阵组成。
3、默认的情况下以第一行作为其他因子的参照。(比如:Golden.rain,0.0cwt)
那么有了虚拟变量后要如何计算呢?
1、单因素多水平(treatment编码方式):
运算公式:y=b+wx+beta ;其中,b是截距,w是权重(斜率),beta(随机误差)
Y = b+w1*x1+w2*x1+beta
A水平:YA = b+w1*0+w2+0+beta = b+beta
B水平:YB = b+w1*1+w2*0+beta = b+w1+beta
C水平:YC = b+w1*0+w2*1+beta = b+w2+beta
那么模型的回归系数就等于:
W1=YB — YA
W2=YC — YA
结论:回归系数等于真实效应差异。
2、两因素两水平有交互作用的情况(sum编码方式):
Y=b+w1*Xa+w2*Xb+w3*Xa*Xb+beta
主效应的回归系数:
Ya1=b-w1-w2+beta
Ya2=b+w1-w2+beta
W1=(Ya2-Ya1)/2
同理:
W2=(Yb2-Yb1)/2
结论:主效应的回归系数等于真实效应的一半。
交互效应的回归系数:
Ya1b1=b-w1-w2+w3+beta
Ya1b2=b-w1+w2-w3+beta
Ya2b1=b+w1-w2-w3+beta
Ya2b2=b+w1+w2+w3+beta
W3=((Ya2b2-Ya2b1)-(Ya1b2-Ya1b1))/4
结论:交互效应等于真实交互效应的四分之一
你们也可以自己去尝试使用treatment编码方式,也就是将上面的Xa、Xb中的-1改为0。若不考虑交互作用的话,将公式中的w3*Xa*Xb剔除,再运算即可。
treatment编码方式做两因素两水平无交互作用时,其主效应的回归系数是等于真实效应的。若有交互作用时,其主效应的回归系数是不等于真实效应的,但交互作用的回归系数等于真实效应。
那么对于本案例中属于双因素多水平的怎么计算回归系数呢?
3、K因素N水平的情况下,如何保证回归系数等于真实的效应值?
R里面是没有这个函数的,可以自己设置编码。即每个因素产生N*(N-1)的矩阵,其中每一列代表一个比较,每一行代表一个水平。第一个水平一般是作为为参照组,其编码为-(1/N),每一列对应基线之外的某个水平与基线的对比,所在的行编码为1-(1/N),其他行编码为-(1/N)。你们可以带入公式去验证一下。
DV m for(i in 1: