|
1统计币
本帖最后由 piglinlin 于 2012-6-25 23:48 编辑
我想使用excel下的vba实现Wilcoxon signed rank检测,并求出它的exact p值,我看了网上很多介绍,但是有好多版本,得出的结果也不一样。我用sigmastat作为测试软件,以该软件得出的p值为标准,网上那些版本我都实践了一遍,没有一个是跟sigmastat的结果一样的,我真是不知道它的p值是怎么求出来的。。。
首先,对W,就有4种版本的求法:
1. W = (T+) + (T-) (T+:正符号秩的秩和,T-:负符号秩的秩和)
2. W = | (T+) + (T-)| (同上)
3. W = T+ (T+:正符号秩的秩和)
4. W = max(T+, T-) (T+:正符号秩的秩和的绝对值,T-:负符号秩的秩和的绝对值)
其次,对Z值的求法,也有好几种:
1. Z = W + 0.5 / Sqr(T^2) 或者 Z = W - 0.5 / Sqr(T^2) (T^2=n*(n+1)*(2n+1)/6)
2. Z = W / sigma
3. Z = W - mu + 0.5 / sigma 或 Z = W + mu + 0.5 / sigma
4. Z = W - 0.5 / Sqr(sigma^2 - (t^3-t)/48)
mu还好,只有一个版本: mu = n*(n+1)/4
但是,sigma 的求法也是有几个版本:
1. sigma = Sqr (n*(n+1)*(2n+1)/24)
2. sigma = Sqr (n*(n+1)*(2n+1)/6) (有一篇文章讲了,这个才是正确的,但是我不知道该不该相信)
从实验中得出的结果,以下 的结果是最接近sigmastat的结果的:
W = (T+) + (T-)
Z = W + 0.5 / Sqr(T^2) 【W<0】 或者 Z = W - 0.5 / Sqr(T^2) 【W>=0】
mu = 0
sigma = Sqr(T^2) (T^2=n*(n+1)*(2n+1)/6)
p value = Loi.normale(W, mu, sigma, true) 或者 p value = Loi.normale.standard(Z)
但毕竟这样求出的结果只是与sigmastat相似而已,我需要的是求出一样的结果,想求助一下,这个wilcoxon的 p value exact 到底是怎么求出来的。。。。
谢谢~~~~~~ |
最佳答案
查看完整内容
z的公式在很多情况下使用的,比如是否进行调整,是否有结的存在。要不w的第一个和第二个本质上来说是完全一样的。确切p值的话按超几何分布进行计算的,样本量大的话几乎不可操作,基本用模拟的手段解决
|