拓端tecdat|R语言线性混合效应模型(固定效应&随机效应)和交互可视化3案例

 

 

在本文中,咱们将用R语言对数据进行线性混合效应模型的拟合,而后可视化你的结果。ide

线性混合效应模型是在有随机效应时使用的,随机效应发生在对随机抽样的单位进行屡次测量时。来自同一天然组的测量结果自己并非独立的随机样本。所以,这些单位或群体被假定为从一个群体的 "人口 "中随机抽取的。示例状况包括测试

  • 当你划分并对各部分进行单独实验时(随机组)。
  • 当你的抽样设计是嵌套的,如横断面内的四分仪;林地内的横断面;地区内的林地(横断面、林地和地区都是随机组)。
  • 当你对相关个体进行测量时(家庭是随机组)。
  • 当你重复测量受试者时(受试者是随机组)。

混合效应的线性模型在R命令lme4和lmerTest包中实现。另外一个选择是使用nmle包中的lme方法。lme4中用于计算近似自由度的方法比nmle包中的方法更准确一些,特别是在样本量不大的时候。优化


测量斑块长度

这第一个数据集是从Griffith和Sheldon(2001年,《动物行为学》61:987-993)的一篇论文中提取的,他们在两年内对瑞典哥特兰岛上的30只雄性领头鶲的白色额斑进行了测量。该斑块在吸引配偶方面很重要,但其大小每一年都有变化。咱们在这里的目标是估计斑块长度(毫米)。lua

 

读取和检查数据

  1. 从文件中读取数据。
  2. 查看数据的前几行,看是否正确读取。
  3. 建立一个显示两年研究中每只飞鸟的测量对图。能够尝试制做点阵图。是否有证据代表不一样年份之间存在着测量变异性?

 

构建线性混合效应模型

  1. 对数据进行线性混合效应模型,将单个鸟类视为随机组。注:对每只鸟的两次测量是在研究的连续年份进行的。为了简单起见,在模型中不包括年份。在R中把它转换成一个字符或因子,这样它就不会被看成一个数字变量。按照下面步骤(2)和(3)所述,用这个模型从新计算可重复性。重复性的解释如何改变?
  2. 从保存的lmer对象中提取参数估计值(系数)。检查随机效应的输出。随机变异的两个来源是什么?固定效应指的是什么?
  3. 在输出中,检查随机效应的标准差。应该有两个标准差:一个是"(截距)",一个是 "残差"。这是由于混合效应模型有两个随机变异的来源:鸟类内部重复测量的差别,以及鸟类之间额斑长度的真实差别。这两个来源中的哪个对应于"(截距)",哪个对应于 "残差"?
  4. 同时检查固定效应结果的输出。模型公式中惟一的固定效应是全部长度测量的平均值。它被称为"(截距)",但不要与随机效应的截距相混淆。固定效应输出给了你平均值的估计值和该估计值的标准偏差。注意固定效应输出是如何提供均值估计值的,而随机效应输出则提供方差(或标准差)的估计值。
  5. 从拟合模型中提取方差份量,估计各年斑块长度的可重复性*。
  6. 解释上一步中得到的重复性测量结果。若是你获得的重复性小于1.0,那么个体内测量结果之间的变化来源是什么。仅是测量偏差吗?
  7. 产生一个残差与拟合值的图。注意到有什么问题?彷佛有一个轻微的正向趋势。这不是一个错误,而是最佳线性无偏预测器(BLUPs)"收缩 "的结果。

 

分析步骤

读取并检查数据。设计

head(fly)

 

# 点阵图
chart(patch ~ bird)

 

 

# 但显示成对数据的更好方法是用成对的交互图来显示
plot(res=patch, x = year)

 

 

# 优化版本
plot(y = patch, x = factor(year), theme_classic)

拟合一个线性混合效应模型。summary()的输出将显示两个随机变异的来源:单个鸟类之间的变异(鸟类截距),以及对同一鸟类进行的重复测量之间的变异(残差)。每一个来源都有一个估计的方差和标准差。固定效应只是全部鸟类的平均值--另外一个 "截距"。 3d

# 1.混合效应模型
# 2. 参数估计
summary(z)

 

# 5. 方差份量
VarCorr(z)

 

# 可重复性
1.11504^2/(1.11504^2 + 0.59833^2)
## [1] 0.7764342
# 7.残差与拟合值的关系图
plot(z)

 

 


金鱼视觉

Cronly-Dillon和Muntz(1965; J. Exp. Biol 42: 481-493)用视运动反应来测量金鱼的色觉。在这里,咱们将对数据进行拟合,包括测试的所有波长。5条鱼中的每一条都以随机的顺序在全部的波长下被测试。敏感度的值大代表鱼能够检测到低的光强度。视运动反应的一个重要特色是,鱼不习惯,在一个波长下的视觉敏感度的测量不太可能对后来在另外一个波长下的测量产生影响。rest

 

读取和检查数据

  1. 读取文件中的数据,并查看前几行以确保读取正确。
  2. 使用交互图来比较不一样光波长实验下的个体鱼的反应。
  3. 使用什么类型的实验设计?*这将决定在拟合数据时使用的线性混合模型。

 

构建线性混合效应模型

  1. 对数据拟合一个线性混合效应模型。能够用lmer()来实现。发现“畸形拟合”,“boundary (singular) fit: see ?isSingular
  2. 绘制拟合(预测)值**。每条鱼的预测值和观察值之间的差别表明残差。
  3. 你在(1)中作了什么假设?建立一个残差与拟合值的图,以检查这些假设之一。
  4. 从保存的lmer对象中提取参数估计值。检查固定效应的结果。给出的系数与使用lm分析的分类变量的解释相同。
  5. 检查随机效应的输出。咱们的混合效应模型中再次出现了两个随机偏差的来源。它们是什么?其中哪一个对应于输出中的"(截距)",哪一个对应于 "残差"?注意,在这个数据集中,其中一个变化源的估计标准差很是小。这就是畸形拟合信息背后的缘由。鱼类之间的方差不太可能真的为零,可是这个数据集很是小,因为抽样偏差,可能会出现低方差估计。
  6. 生成基于模型的每一个波长的平均敏感度的估计。
  7. 各个波长之间的差别是否显著?生成lmer对象的方差分析表。这里测试的是什么效应,随机效应仍是固定效应?解释方差分析结果。

*这是一个 "按实验对象 "的重复测量设计,由于每条鱼在每一个实验下被测量一次。它本质上与随机彻底区块设计相同(把每条鱼看做是 "区块")。code

*可视化是首选,由于数据和拟合值都被绘制出来。请注意鱼与鱼之间的预测值是多么的类似。这代表在这项研究中,个体鱼之间的估计差别很是小。对象

***通常来讲,在方差分析表中只测试固定效应。使用测试随机效应中没有方差的无效假设是可能的。blog

分析步骤

读取并检查数据。

x <- read.csv("fish.csv", 
        stringsAsFactors = FALSE)
head(x)

拟合一个线性混合效应模型。

该模型假设全部拟合值的残差为正态分布,方差相等。该方法还假设个体鱼之间的随机截距为正态分布。该方法还假设组(鱼)的随机抽样,对同一鱼的测量之间没有影响。

# # 1. 拟合混合效应模型。
## boundary (singular) fit: see ?isSingular

 

# 2. 这就为每条鱼分别绘制了拟合值。
vis(z)

 

 

 

# 3.测试假设
plot(z)

 

# 4. 提取参数估计值
summary(z)

 

# 6.  基于模型的平均敏感度估计 
means(z)

 

# 7. ANOVA方差分析

 


蓍草酚类物质的浓度

项目实验性地调查了国家公园的北方森林生态系统中施肥和食草的影响(Krebs, C.J., Boutin, S. & Boonstra, R., eds (2001a) Ecosystem dynamics of the Boreal Forest.Kluane项目. 牛津大学出版社,纽约)) ,目前的数据来自于一项关于植物资源和食草动物对底层植物物种防护性化学的影响的研究。

16个5x5米的小区中的每个都被随机分配到四个实验之一。1)用栅栏围起来排除食草动物;2)用N-P-K肥料施肥;3)用栅栏和施肥;4)未实验的对照。而后,16块地中的每一块被分红两块。每块地的一侧(随机选择)在20年的研究中持续接受实验。每块地的另外一半在头十年接受实验,以后让它恢复到未实验的状态。这里要分析的数据记录了欧蓍草(Achillea millefolium)中酚类物质的浓度(对植物防护化合物的粗略测量),欧蓍草是地块中常见的草本植物。测量单位是每克干重毫克丹宁酸当量。

 

可视化数据

  1. 从文件中读取数据。
  2. 检查前几行的数据。实验是做为一个有四个层次的单一变量给出的(而不是做为两个变量,围墙和肥料,用2x2因子设计的模型)。持续时间表示半块土地是否接受了整整20年的实验,或者是否在10年后中止实验。变量 "ch "是蓍草中酚类物质的浓度。
  3. 画一张图来讲明不一样实验和持续时间类别中蓍草中的酚类物质的浓度。在每一个实验和持续时间水平的组合中没有不少数据点,因此按组画条形图可能比按组画箱形图更好。
  4. 添加线段来链接成对的点。

 

拟合一个线性混合效应模型

  1. 使用的是什么类型的实验设计?*这将决定对数据的线性混合模型的拟合。
  2. 在没有实验和持续时间之间的交互做用的状况下,对数据进行线性混合模型拟合。使用酚类物质的对数做为因变量,由于对数转换改善了数据与线性模型假设的拟合。
  3. 可视化模型对数据的拟合。按持续时间(若是xvar是实验)或实验(若是xvar是持续时间)分开面板。visreg()不会保留配对,但会容许你检查残差。
  4. 如今重复模型拟合,但此次包括实验和持续时间之间的相互做用。将模型与数据的拟合状况可视化。两个模型拟合之间最明显的区别是什么,一个有交互做用,另外一个没有?描述包括交互项的模型 "容许 "什么,而没有交互项的模型则不容许。判断,哪一个模型最适合数据?
  5. 使用诊断图检查包括交互项的模型的线性混合模型的一个关键假设。
  6. 使用拟合模型对象估计线性模型的参数(包括交互做用)。请注意,如今固定效应表中有许多系数。
  7. 在上一步的输出中,你会看到 "随机效应 "标签下的 "Std.Dev "的两个数量。解释一下这些数量指的是什么。
  8. 来估计全部固定效应组合的模型拟合平均值。
  9. 生成固定效应的方差分析表。哪些项在统计学上是显著的?
  10. 默认状况下,lmerTest将使用Type 3的平方和来测试模型项,而不是按顺序(Type 1)。用类型1来重复方差分析表。结果有什么不一样吗?**

*实验采用了分块设计,即整个块被随机分配到不一样的实验,而后将第二种实验(持续时间)的不一样水平分配到块的一半。

*应该没有差异,由于设计是彻底平衡的。

分析步骤

阅读并检查数据。

一个好的策略是对实验类别进行排序,把对照组放在前面。这将使线性模型的输出更加有用。

# 1. 读取数据
# 2. 检查
head(x)

 

# 3. 分组带状图
# 首先,从新排列实验类别
factor(treat,levels=c("cont","exc","fer","bo"))
plot(data = x, y = log(phe), x = treat, fill = dura, color = dura)

 

 

# 4. 在多个面板上分别绘制成对的数据
plot(data = x,y = log(ach, x = dur, fill = dur, col = dur)

 

 

拟合一个线性混合效应模型。固定效应是 "实验 "和 "持续时间",而 "块"是随机效应。拟合交互做用时,实验水平之间的差别大小在持续时间水平之间会有所不一样。

因为随机效应也存在(块),系数表将显示两个随机变化来源的方差估计。一个是拟合模型的残差的方差。第二个是(随机)块截距之间的方差。

# 2. 拟合混合效应模型-无交互做用
# 3. 可视化
vis(z)

# 4. 包括交互项和再次视觉化
z.int <- lmer(log(phen.ach) ~ treatment * duration + (1|plot), data=x)

vis(z.int, overlay = TRUE)

 

# 5. 绘制图表以检验方差齐性(以及正态性)
plot(z)

 

# 6. 系数
summary(z)

 

# 8. 模型拟合平均值
means(z, data = x)

# 9. 方差分析表
anova(z) # lmerTest中默认为3类平方和。

 

# 10.  改成1类
anova(z, type = 1)


相关文章
相关标签/搜索