在 R 中重新创建各种非参数 ANCOVA 分析

Recreate various Non-Parametric ANCOVA analyses in R

我希望在 R 中重新创建各种分析,这些分析可以计算多种类型的非参数方差分析。

让我们使用 R 中 datasets 包中的 mtcars 数据作为示例。假设我想根据 Transmission 预测 MPG,同时控制 Cylinders。我将使用以下代码在 R 中进行正常的 ANCOVA:

summary(aov(mpg ~ cyl + am, mtcars))

这部分很简单。这对我来说有点棘手(因为我不懂统计)。我一直在阅读几篇文章,这些文章讨论了非参数 ANCOVA 的不同方法。例如,Lawson (1983) 发表的 on page 334 of this article 描述了三种不同的非参数 ANCOVA 方法:

我认为我在正确的轨道上使用以下代码重新创建前两个:

summary(aov(rank(mpg) ~ rank(cyl) + am, mtcars)) ## Ranks
summary(aov(lm(rank(mpg) ~ rank(cyl), mtcars)$residuals ~ am, mtcars)) ## Quade

但是,在重新创建 Puri 和 Sen 的非参数 ANCOVA 时,我不知所措。我确实遇到了 this article。在第 374 页,该段落讨论了 Quade 的工作,作者提到了一个与 Quade 版本的 ANCOVA 略有不同的程序。我想知道这是 Puri 和 Sen 的方法还是有什么不同?我重新创建了下面描述的内容。它似乎是上述 Quade 代码的修改版本。

summary(lm(rank(mpg) ~ rank(cyl) + am, mtcars)) ## Puri and Sen?

总结一下,我正在探索 运行 非参数 ANCOVA 的不同方法,我想在 R 中重新创建 Quade 和 Puri 和 Sen 的程序。如果还有其他方法,我也会有兴趣探索这些。

谢谢

经过一天的程序阅读,我得到了大约 2/3 的答案。根据Bonate (2000) 文本的第5章,Quade的Non-Parametric ANCOVA计算如下:

# Transform the CYL and MPG to Ranks
mtcars$cylRank <- rank(mtcars$cyl)
mtcars$mpgRank <- rank(mtcars$mpg)

# Convert to Ranks to Deviation Scores
mtcars$cylDev <- mtcars$cylRank - mean(mtcars$cylRank )
mtcars$mpgDev <- mtcars$mpgRank - mean(mtcars$mpgRank )

# Spearman Correlation
cor.1 <- with(mtcars, cor(mpgRank , cylRank , method="spearman"))

# Deviation Rank of MPG is Predicted from the Deviation Rank of CYL
mtcars$est.mpg <- mtcars$cylDev * cor.1

# Predicted Deviation Rank of MPG is Subtracted from the Observed Deviation Rank of CYL
mtcars$mpg.resid <- mtcars$est.mpg - mtcars$mpgDev

# ANOVA on the Residual Deviation Rank Scores
summary(aov(mpg.resid ~ am, mtcars))

我在上面误以为 Puri 和 Sen 程序是按等级分析的。该分析被称为等级上的参数化方差分析。即运行如下:

Anova(aov(rank(mpg) ~ rank(cyl) + am, mtcars), type="III)

我对 Puri 和 Sen 检验统计量 (Ln) 的唯一信息是它检验了没有治疗效果的假设,并作为卡方随机变量分布。 Quade 的方法只是 Puri 和 Sen 过程的一个特例(但具有不同的分布)。

在提出如何计算 R 中的 Puri 和 Sen 检验统计量的解决方案之前,我将保持这个问题。