在进行重复测量ANOVA时,lm.fit(x, y, offset = offset, singular.ok = singular.ok, ...)出现错误:r中有0个(非NA)案例。

3

当我使用rstatix包中的anova_test()函数进行双因素重复测量方差分析时,出现了一个错误:

Error in lm.fit(x, y, offset = offset, singular.ok = singular.ok, ...) : 0 (non-NA) cases

我检查了我的数据,没有缺失值。

顺便说一下,在我的数据中,并不是所有人都有8次outcome。有些人最多只有3次,有些人有8次等。

我参考了这个网站来进行我的双因素重复测量方差分析:

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

我已将数据集上传至Github。

mydatahttps://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)


你能否写出你想要拟合的方差分析公式? - alan ocallaghan
可能是这样的:aov(outcome ~ time*treatment + Error(id), data = mydata) - zhiwei li
当患者接受治疗或不接受治疗时,如何将治疗作为被试者协变量进行处理? - alan ocallaghan
1个回答

3

对于重复测量的ANOVA,您需要在每个时间点之前和之后进行完整的观察。 在进行ANOVA之前,请检查这些观察结果,这样做总是有益的。

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

因此,该主题仅具有control2观察值,而没有treatment2观察值。如果项目输入存在问题,请进行更正。以下是一个示例,说明何时可以使用:

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),这是一个混合方差分析(mixed ANOVA),但这需要接受过治疗和对照组两种情况的个体来控制个体效应,而您的数据集中缺乏此类数据。

在这种情况下,您唯一可以执行的方差分析是双因素方差分析(two-way ANOVA):

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接