R - Один ковариат применяется только к одному уровню фиксированного эффекта в смешанной модели - PullRequest
0 голосов
/ 07 марта 2019

Я собрал зависимую переменную (мышечная сила) до (PRE) и после (POST) 15 тренировок.Каждый сеанс был классифицирован по 2 различным типам обучения (тип A и тип B).Я хотел бы исследовать, есть ли различия в моей зависимой переменной в PRE-POST и типе обучения (Тип A и Тип B), контролирующем для двух ковариат (переменные продолжения) и использующем предметы как случайный эффект.Моя проблема заключается в следующем: в то время как Covariate A (благополучие субъектов) влияет на зависимую переменную как в PRE, так и в POST, Covariate B (тренировочная нагрузка на сеанс) влияет только на зависимую переменную в POST.Следовательно, в моем наборе данных Ковариат B в PRE пуст.

Здесь описание моих переменных: Зависимая переменная: 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 s`.

Иными словами, если я выполню анализ со следующим набором данных, модель будет работать.Тем не менее, я знаю, что Ковариат B не влияет на DV в PRE.Таким образом, нелогично применять значение ковариата 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: неправильная модель, в которой CovariateB_2 (тренировочная нагрузка) сообщается как в PRE, так и в POST.

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);
...