R-一个协变量仅适用于混合模型中固定效应的一个级别

时间:2019-03-07 13:28:25

标签: r database covariance mixed-models

我在15次训练之前(PRE)和之后(POST)收集了因变量(​​肌肉力量)。每节课分为2种不同类型的培训(A型和B型)。 我想调查一下我的因变量在PRE-POST和控制两个协变量(连续变量)并使用受试者作为随机效应的训练类型(类型A和类型B)中是否存在差异。 我的问题如下:虽然协变量A(受试者的健康状况)影响PRE和POST中的因变量,但协变量B(会话训练负荷)仅影响POST时的因变量。因此,在我的数据集中,PRE的协变量B为空。

这里是我的变量的描述: 因变量:DV(肌肉力量) 自变量:练习类型(2级:A型和B型) 自变量:时间(2个级别:PRE和POST) 协变量A:连续变量(幸福感) 协变量B:连续变量(会话训练负荷) ID:主题

我正在尝试使用R和lme4拟合混合效果模型,但是我对混合模型的使用不熟悉。我的模型如下:

Model = lmer (DV~ Time * Type + (Covariate A)+( Covariate B)+(1|subject1) , data=dataset)

数据集如下:

ID  Session Time    Type    Covariate A Covariate B DV
Sub1    n1  PRE      A          10                  120
sub1    n1  POST     A          10          5       115
sub1    n2  PRE      B          14                  122
sub1    n2  POST     B          14          6       124
sub1    n3  PRE      A          12                  123
sub1    n3  POST     A          12          7       119
sub1    n4  PRE      B          9                   118
sub1    n4  POST     B          9           8       120
…       …    …       …          …           …        …

但是,当我使用该数据库运行模型时,出现以下错误: contrasts<-(*tmp*, value = contr.funs[1 + isOF[nn]]) : contrasts can be applied only to factors with 2 or more level秒内出错。

另外,如果我使用以下数据集运行分析,则该模型有效。但是,我知道协变量B不会影响PRE中的DV。因此,将协变量B的值应用于PRE的观测值是不合逻辑的。

ID  Session Time    Type    Covariate A Covariate B DV
Sub1    n1  PRE      A          10          5       120
sub1    n1  POST     A          10          5       115
sub1    n2  PRE      B          14          6       122
sub1    n2  POST     B          14          6       124
sub1    n3  PRE      A          12          7       123
sub1    n3  POST     A          12          7       119
sub1    n4  PRE      B          9           8       118
sub1    n4  POST     B          9           8       120
…       …    …       …          …           …        …

如何考虑这一方面来组织数据库?


根据建议,您可以在此处找到可以运行的示例:drive.google.com/open?id=1h1F_ITZmmCN5sNKtMsETM2yakx3Kjmn0

模型1:正确的模型,其中CovariateB(会话训练负荷)仅影响POST时的因变量。

模型2:错误的模型,其中在PRE和POST中都报告了CovariateB_2(会话训练负荷)。

R脚本:

library(lme4)
library(lmerTest)
library(emmeans)
library(readxl)

dataset = read_excel("$$:/$$$/$$/$$.xlsx", sheet = NULL, range = NULL, col_names = TRUE)

dataset$Time <- as.factor(dataset$Time)
dataset$Type <- as.factor(dataset$Type)
dataset$Subject <- as.factor(dataset$Subject)



Model_1 = lmer(((DV)) ~ Time*Type+(CovariateA)+(CovariateB)+(1|Subject), data=dataset, REML=FALSE);
Model_2 = lmer(((DV)) ~ Time*Type+(CovariateA)+(CovariateB_2)+(1|Subject), data=dataset, REML=FALSE);

0 个答案:

没有答案