在R

时间:2018-07-16 20:43:05

标签: r covariance rank anova

我希望在R中重新创建各种分析,以计算几种类型的非参数ANCOVA。

我们以R中的mtcars包中的datasets数据为例。假设我想在控制MPG的同时从Transmission预测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版本略有不同。我想知道这是普里和森的方法还是其他方法?我重新创建了以下内容。它似乎是上述Quade代码的修改版本。

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

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

谢谢

1 个答案:

答案 0 :(得分:0)

在阅读了有关程序的一天之后,我得到了大约2/3的答案。根据Bonate(2000)的第5章,Quade的非参数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程序只是在等级上进行了分析。该分析称为Ranks中的参数ANCOVA。运行如下:

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

我对Puri和Sen检验统计量(Ln)的唯一了解是,它检验了无治疗效果的假设,并以卡方随机变量的形式分布。 Quade的方法只是Puri和Sen过程的一种特例(但分布不同)。

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