- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 R 中的 lme4 包和函数 lmer() 来为我的 split - split 图设计拟合模型。如果我没有丢失少量观察值,我会使用重复测量方差分析,但丢失的数据对于线性混合效应模型应该没有问题。
我的数据框 (data
) 有一个简单的结构,包含四个因素和一个名为 all_vai
的数字结果变量。请注意,在此示例数据框中,并非所有因素的所有级别都被交叉,即使它们在我的真实数据中(缺失的观察除外)。这对我的问题来说应该无关紧要,这是为了修复有问题的语法。
collected_vai <- rnorm(125, mean = 6, sd = 1)
missing <- rep(NA, times = 3)
all_vai <- c(collected_vai, missing)
year1 <- rep(2018, times = 32)
year2 <- rep(2019, times = 32)
year3 <- rep(2020, times = 32)
year4 <- rep(2021, times = 32)
year <- c(year1, year2, year3, year4)
disturbance_severity <- rep(c(0,45,65,85), each = 32)
treatment <- rep(c("B" , "T"), each = 64)
replicate <- rep(c("A", "B", "C", "D"), each = 32)
data = data.frame(all_vai, year, disturbance_severity, treatment, replicate)
data$year <- as.factor(data$year)
data$disturbance_severity <- as.factor(data$disturbance_severity)
data$treatment <- as.factor(data$treatment)
data$replicate <- as.factor(data$replicate)
这是我为具有不同(正态分布)数值结果且没有缺失观察值的相同数据集运行的模型——也就是说,如果我现在没有不平衡的重复测量,这就是我将要运行的模型丢失数据:
VAImodel1 <- aov(all_vai ~ disturbance_severity*treatment*year + Error(replicate/disturbance_severity/treatment/year), data = data)
summary(VAImodel1)
当我运行它时,我收到错误消息:“警告消息:在 aov(mean_vai ~ disturbance_severity * treatment * Year + Error(Replicate/disturbance_severity/treatment/Year) 中:错误()模型是单一的”
我有来自不同年份的观察嵌套在不同的处理中,这些观察嵌套在不同的干扰严重性中,并且所有这些都嵌套在重复(它们是实验 block )中。所以我尝试在 lme4 中使用这个结构:
library(lme4)
library(lmerTest)
VAImodel2 <- lmer(all_vai ~ (year|replicate:disturbance_severity:treatment) + disturbance_severity*treatment*year, data = data)
summary(VAImodel2)
这是我收到的错误消息:“错误:观察次数 (=125) <= 随机效应数 (=128) for term (Year | Replicate:disturbance_severity:treatment);随机效应参数和残差(或尺度参数)可能无法识别”
接下来,我尝试通过删除处理变量和交互项来简化我的模型,这样我就不会用尽自由度,如下所示:
VAImodel3 <- lmer(all_vai ~ (year|replicate:disturbance_severity) + disturbance_severity*year, data = data)
summary(VAImodel3)
这次我得到了一个不同的错误:“边界(奇异)拟合:见?isSingular警告信息:模型未能收敛于 1 个负特征值:-1.2e-01 "
提前感谢您的帮助。
最佳答案
您的问题是错误的数据准备!!
让我们从定义变量 year
、disturbance_severity
、treatment
、replicate
的值开始。
library(tidyverse)
set.seed(123)
yars = 2018:2021
disturbances = c(0,45,65,85)
treatments = c("B" , "T")
replicates = c("A", "B", "C", "D")
n = length(yars)*length(disturbances)*length(treatments)*length(replicates)*1
nNA=3
请注意,我首先创建了变量 yars
、disturbances
、treatments
和 replicates
值(value)观。
然后我计算了 n
中的数据量(您可以将乘法中的最后一个值从 1
增加到例如 10
)并且确定变量 nNA
中将丢失多少个值。
关键方面是函数 expand.grid(yars, disturbances, treatments, replicates)
的使用,它将返回具有正确值分布的适当表格.
查看 expand.grid
返回的前几行。
Var1 Var2 Var3 Var4
1 2018 0 B A
2 2019 0 B A
3 2020 0 B A
4 2021 0 B A
5 2018 45 B A
6 2019 45 B A
7 2020 45 B A
8 2021 45 B A
9 2018 65 B A
10 2019 65 B A
11 2020 65 B A
12 2021 65 B A
13 2018 85 B A
14 2019 85 B A
15 2020 85 B A
16 2021 85 B A
17 2018 0 T A
18 2019 0 T A
这很重要。下一步就在眼前。我们创建一个 tibble
序列并将其放入 aov
函数中。
data = tibble(sample(c(rnorm(n-nNA, mean = 6, sd = 1), rep(NA, nNA)), n)) %>%
mutate(expand.grid(yars, disturbances, treatments, replicates)) %>%
rename_with(~c("all_vai", "year", "disturbance_severity", "treatment", "replicate"))
VAImodel1 <- aov(all_vai ~ disturbance_severity*treatment*year +
Error(replicate/disturbance_severity/treatment/year), data = data)
summary(VAImodel1)
输出
Error: replicate
Df Sum Sq Mean Sq F value Pr(>F)
disturbance_severity 1 0.1341 0.1341 0.093 0.811
treatment 1 0.0384 0.0384 0.027 0.897
Residuals 1 1.4410 1.4410
Error: replicate:disturbance_severity
Df Sum Sq Mean Sq F value Pr(>F)
disturbance_severity 1 0.1391 0.1391 0.152 0.763
treatment 1 0.1819 0.1819 0.199 0.733
year 1 1.4106 1.4106 1.545 0.431
Residuals 1 0.9129 0.9129
Error: replicate:disturbance_severity:treatment
Df Sum Sq Mean Sq F value Pr(>F)
treatment 1 0.4647 0.4647 0.698 0.491
year 1 0.8127 0.8127 1.221 0.384
Residuals 2 1.3311 0.6655
Error: replicate:disturbance_severity:treatment:year
Df Sum Sq Mean Sq F value Pr(>F)
treatment 1 2.885 2.8846 3.001 0.144
year 1 0.373 0.3734 0.388 0.560
treatment:year 1 0.002 0.0015 0.002 0.970
Residuals 5 4.806 0.9612
Error: Within
Df Sum Sq Mean Sq F value Pr(>F)
treatment 1 0.03 0.031 0.039 0.8430
year 1 1.29 1.292 1.662 0.2002
treatment:year 1 4.30 4.299 5.532 0.0206 *
Residuals 102 79.26 0.777
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
现在没有model is singular错误!!
关于r - 我在 lme4::lmer() 中的语法有什么问题,用于具有不平衡重复测量的拆分图设计?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70251024/
我有一个包含 142 个数据条目的数据集:两次测量 121 个人(两年,治疗前和治疗后,年份 = 0 或 1),第二年有 46 个人在处理区,其余在控制区绘图(处理 = 0 或 1)。以下是一些示例数
我正在尝试编写一个函数来收集我在脚本中经常使用的一些调用 我在我的例子中使用了 lme4 包的 sleepstudy 数据 这是我开始使用的功能(的简化版本): trimModel1 <- funct
我经常遇到这个问题:我想用约束拟合多级回归。我不知道该怎么做。我通常最终会使用 lavaan,因为它允许对回归系数设置约束。但它仍然不能有随机斜率模型(只有随机截距,事实是我也不知道如何在 lavaa
我有一个具有以下结构的数据框: > t str(t) 'data.frame': 699 obs. of 7 variables: $ Awns : int 0
我正在尝试使用 lmer 函数运行混合效果模型。我的实验包括使用一些相同的个体在不同温度下的代谢率(一些缺失数据)。文本文件的结构如下所示: > str(data.by.animal) 'data.f
lme4 包中的函数lmer 默认使用minqa 包中的bobyqa 作为优化算法。 根据以下帖子https://stat.ethz.ch/pipermail/r-sig-mixed-models/2
我正在使用 lme4 运行混合模型在 R: full_mod3=lmer(logcptplus1 ~ logdepth*logcobb + (1|fyear) + (1 |flocation), da
我有一些纵向数据,我想从中获得指定时间的预测均值。该模型包括 2 个项,它们的交互作用和时间变量的样条项。当我尝试获取预测均值时,我得到“mm %*% fixef(m4) 中的错误:不一致的参数” 我
我目前正在尝试帮助一位同事,但我根本找不到解决方案。所以我希望其他人可以帮助我们。 我有一个数据集,其中包含使用不同研究设计评估的权重数据,针对不同研究中的不同物种(一项研究包括多种设计和多种物种)。
我正在为具有 4 个级别的预测器 root.type 上的单个响应变量运行线性混合模型;当我运行模型时,我只想要有关整个因素的信息,但它一直将其拆分为多个级别。有什么想法吗? Ca.auto |t|)
当您有一个包含大量因素和相互作用的多级模型时,固定效应矩阵的相关性大小可能会变得非常大且不清楚。 我可以使用 symbolic.cor=T打印方法中的参数以更清晰地打印摘要,如下所示: ratbrai
我想使用回归模型而不是“方差分析”(AOV)函数在 R 中运行重复测量方差分析。 这是我的 3 个主题内因素的 AOV 代码示例: m.aov<-aov(measure~(task*region*ac
我对混合模型使用了以下语法,然后 step 但它不起作用。 它通常是这样工作的还是我实际上不能使用 lmer 使用反向消除?谢谢! fullmodel<-lmer(Eeff~NDF+ADF+CP+NE
我有四个位置和四个基板的移植实验(取自每个位置)。我已经确定了每个位置和基质组合中每个种群的存活率。本实验重复 3 次。 我创建了一个 lmm 如下: Survival.model <- lmer(S
我需要提取 standard error来自 lmer 输出的方差分量. library(lme4) model <- lmer(Reaction ~ Days + (1|Subject), slee
我在 R 装了一个模型与 lmer() -功能来自 lme4包裹。我缩放了因变量: mod fixef(mod) (Intercept) X1 X2
我已经拟合了一个 lmer 模型,现在我正在尝试根据实际系数而不是缩放系数来解释系数。 我的顶级模特是: lmer(logcptplus1~scale.t6+scale.logdepth+(1|lo
我刚刚将 lme4 更新到 1.0-4 版,当我运行 lmer() 时,我之前收敛的混合效果模型现在会打印此警告: Warning message: In (function (fn, par, lo
我曾经使用下面的代码来计算 lmer 模型的标准化系数。但是,随着 lme 的新版本,返回对象的结构发生了变化。 如何调整函数 stdCoef.lmer 以使其与新的 lme4 版本一起使用? # I
我正在尝试在 drake 计划中安装一些 lme4::lmer 模型,但出现错误 'data' not found, and some variables missing from formula e
我是一名优秀的程序员,十分优秀!