如何对转换后仍然不正常的数据进行方差分析?

机器算法验证 非参数 数据转换
2022-03-23 11:15:34

我正在研究失败和诱捕诱导条件对三个不同时间点(除其他外)失败和诱捕的主观评价的影响。

然而,主观评级不是正态分布的。我已经进行了几次转换,平方根转换似乎效果最好。但是,数据的某些方面仍然没有标准化。这种非正态性表现在高诱捕高失败条件下的负偏度,在我预计会有最高失败和诱捕等级的时间点。因此,我认为可以说这种偏差是由于实验操作造成的。

考虑到操作,尽管缺乏正态性,对这些数据运行 ANOVA 是否可以接受?还是非参数检验更合适?如果是这样,是否存在 4x3 混合方差分析的非参数等效项?

3个回答

应该是正态分布的残差,而不是响应变量的边际分布。

我会尝试使用转换,进行方差分析,并检查残差。如果无论您使用什么转换,它们看起来都明显不正常,我会切换到非参数测试,例如弗里德曼测试。

我相信对于负偏态数据,您可能必须在应用另一个数据转换(例如对数或平方根)之前反映数据变得正偏态。但是,这往往会使您的结果难以解释。

你的样本量是多少?根据它的大小,参数测试可能会给出相当好的估计。

否则,对于非参数替代方案,也许您可​​以尝试Friedman test

此外,您可以尝试对重复测量进行 MANOVA,其中包含明确的时间变量,作为 4x3 混合 ANOVA 的替代方案。一个主要的区别是球形度的假设是放松的(或者更确切地说,它是为你估计的),并且你的结果变量的所有时间点都被一次拟合。

boxcox 变换(在 MASS 包中有一个)对负偏态数据和正偏态数据都有效。仅供参考,您需要在该函数中输入一个公式,如 y~1 并首先确保所有 y 都是正数(如果它不只是添加一个常数,如 abs(min(y)))。您可能需要调整函数中的 lambda 范围以找到曲线的峰值。它将为您提供最佳 lambda 值供您选择,然后您只需应用此转换:

b <- boxcox(y~1)
lambda <- b$x[b$y == max(b$y)]
yt <- (y^lambda-1)/lambda
#you can transform back with
ytb <- (t*lambda+1)^(1/lambda)

看看你的数据是否正常。

#you can transform back with
ytb <- (t*lambda+1)^(1/lambda)
#maybe put back the min
ytb <- ytb - abs(min(y))