如何解释除 t 检验例如回归以外的统计检验中的配对观察?

问题描述

如何解释除 t-test 之外的统计检验中的成对观察?下面我将讨论两个示例,其中我尝试使用混合效果方法进行操作但失败了。

示例 1:如何在 t.test(...,paired=T) 中重现 lm()

# simulate data
set.seed(66)
x1 <- rnorm(n=100,mean=30,sd=6)
x2 <- rnorm(n=100,mean=60,sd=6)

# arrange the data in a dataset
dd <- data.frame(ID=rep(paste("ID",seq(1,100,by=1),sep="_"),2),response=c(x1,x2),group=c(rep("A",100),rep("B",100))
                        )
t.test(x1,x2,paired=F)
summary(lm(response~group,data=dd)) # same outcome

如果观察是成对的,可以用 t.test() 解释它,但如何在 lm() 中做到这一点(如果可能的话)?我尝试使用混合效应模型方法,但是:

summary(lmerTest::lmer(response~group + (1+group|ID),data=dd))

给出错误:

Error: number of observations (=200) <= number of random effects (=200) for term (1 + group | ID);
the random-effects parameters and the residual variance (or scale parameter) are probably unidentifiable

虽然:

summary(lmerTest::lmer(response~group + (1|ID),data=dd))

运行但固定效应参数估计和相关的标准。误差和 t 值与 lm() 产生的相同。

示例 2:具有成对观测值的线性回归

假设我创建的数据集中的观察结果来自相隔 30 天测量的对象 - 即,100 个对象中的每一个在第 0 天测量,然后在第 30 天再次测量 - 我们想要估计变化率时间:

dd$time=c(rep(0,rep(30,100)) # add "time" variable to dd

数据如下所示(黑色为线性回归,由红线链接成对数据):

enter image description here

lm1 <- lm(response~time,data=dd)

lm1 不考虑观察的成对性质。 我想运行一个混合效应模型,允许每对数据的截距和斜率不同,但 R 再次抗议我试图估计太多参数:

lmerTest::lmer(response ~ time + (time | ID),data=dd)
# Error: number of observations (=200) <= number of random effects (=200) for term (time | ID);
# the random-effects parameters and the residual variance (or scale parameter) are probably unidentifiable

允许数据对截距不同但斜率不同的更简单模型,即:

lmer(response ~ time + (1 | ID),data=dd)

投诉:

boundary (singular) fit: see ?isSingular

但运行并产生与 lm() 产生的相同的固定效应估计。

[更新]

@Limey 提醒我,配对 t 检验只不过是评估两组之间的配对差异是否为零的 t 检验。这种成对差异可用于执行除 t 检验之外的任何配对统计检验。为了验证这一点,我创建了三个不同的“响应”变量,它们组合了以不同方式排序的 x1x2(分别为:原始随机顺序;x1 递增和 {{1} } 降序;两者都是升序)。

x2

enter image description here

我计算了相应的差异:

dd$response2 <- c(sort(x1,decreasing = FALSE),sort(x2,decreasing = T))
dd$response3 <- c(sort(x1,decreasing = F))

enter image description here

并用它们来执行线性模型:

dd$diff1 <- c((dd$response[1:100]-dd$response[1:100]),(dd$response[101:200]-dd$response[1:100]))
dd$diff2 <- c((dd$response2[1:100]-dd$response2[1:100]),(dd$response2[101:200]-dd$response2[1:100]))
dd$diff3 <- c((dd$response3[1:100]-dd$response3[1:100]),(dd$response3[101:200]-dd$response3[1:100]))

我预计它们的斜率估计会有所不同,但它们都相同:

lm2.diff1 <- lm(diff1~time,data=dd)
lm2.diff2 <- lm(diff2 ~time,data=dd)
lm2.diff3 <- lm(diff3 ~time,data=dd)

它们的斜率估计值与对应的“未配对”线性模型(summary(lm2.diff1)$coeff[2] # 0.9993754 summary(lm2.diff2)$coeff[2] # 0.9993754 summary(lm2.diff3)$coeff[2] # 0.9993754 lm(response~time)lm(response2~time))的估计值相同。我错过了什么?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)