Ошибка в lm.fit (x, y, offset = offset, singular.ok = singular.ok, ...): 0 (не NA) случаев в r с повторяющимися значениями ANOVA - PullRequest
1 голос
/ 03 марта 2020

Когда я использую функцию anova_test() (из пакета rstatix) для выполнения двусторонних повторных измерений ANOVA, возникает ошибка:

Ошибка в lm.fit (x, y, offset) = offset, singular.ok = singular.ok, ...): 0 (не NA) случаев

Я проверяю свои данные, и пропущенных значений нет.

Кстати По моим данным, не все люди имеют 8 раз outcome. У некоторых людей максимум 3 раза, около 8 раз и т. Д.

Я обращаюсь к этому сайту, чтобы выполнить мои двусторонние повторные измерения ANOVA:

https://www.datanovia.com/en/lessons/repeated-measures-anova-in-r/

Я загрузил свой набор данных в github.

mydata: https://github.com/lizhiwei1994/testRepo/blob/master/mydata.csv

Мой код:

# load packages
library("tidyverse")
library("ggpubr")
library("rstatix")

# load data and check missing value
mydata <- read.csv(
  url("https://raw.githubusercontent.com/lizhiwei1994/testRepo/master/mydata.csv")
) %>% convert_as_factor(id, time, treatment)
glimpse(mydata)
sum(is.na(mydata))

# error occurring
res.aov <- anova_test(
  data = mydata, dv = outcome, wid = id,
  within = c(treatment, time)
)


get_anova_table(res.aov)

1 Ответ

0 голосов
/ 05 марта 2020

Для повторного измерения ановой фазы вам нужны полные наблюдения для каждой временной точки, до и после лечения, перед тем, как делать анову, всегда полезно проверить наблюдения:

tab = table(mydata$time,mydata$treatment,mydata$id)
#subject = 1
tab[,,"1"]

    control2 treat2
  1        1      0
  2        1      0
  3        1      0
  4        1      0
  5        1      0
  6        1      0
  7        1      0
  8        0      0

Так что у этого субъекта есть только контрольные 2 наблюдения, но без лечения 2 наблюдения. Если что-то не так с вводом темы, пожалуйста, исправьте это. Ниже я могу показать вам пример того, когда он будет работать:

test = expand.grid(id=1:2,time=1:8,treatment=c("a","b"))
test$outcome=rnorm(nrow(test))
table(test$time,test$treatment,test$id)
, ,  = 1


    a b
  1 1 1
  2 1 1
  3 1 1
  4 1 1
  5 1 1
  6 1 1
  7 1 1
  8 1 1

, ,  = 2


    a b
  1 1 1
  2 1 1
  3 1 1
  4 1 1
  5 1 1
  6 1 1
  7 1 1
  8 1 1

anova_test(data=test,dv=outcome,wid=id,within=c("treatment","time"))
ANOVA Table (type III tests)

          Effect DFn DFd       F     p p<.05   ges
1      treatment   1   1 424.283 0.031     * 0.078
2           time   7   7   1.596 0.276       0.422
3 treatment:time   7   7   1.571 0.283       0.422

Если ваш набор данных таков, согласно формуле, которую вы предоставили в комментарии aov(outcome ~ time*treatment + Error(id), data = mydata), это смешанная анова, но для этого вам нужны лица, которые прошли как лечение, так и контроль, чтобы контролировать индивидуальный эффект, а это отсутствует в вашем наборе данных.

Единственная анова, которую вы можете выполнить в этой ситуации, - это двусторонняя анова:

anova_test(data=test,dv=outcome,between=c(time,treatment))
Coefficient covariances computed by hccm()
ANOVA Table (type II tests)

          Effect DFn DFd     F     p p<.05   ges
1           time   7  16 1.668 0.187       0.422
2      treatment   1  16 1.350 0.262       0.078
3 time:treatment   7  16 1.668 0.187       0.422
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...