【Python】秩转换的非参数检验

非参数检验是相对于参数检验而言的。如果总体分布为已知的数学形式,对其总体参数作假设检验称为参数检验。如对服从正态分布的计量资料的总体均数作假设检验的t检验和F检验就是参数检验。

对于计量资料,不满足参数检验条件的假设检验方法,可以尝试变量变换使其满足参数检验条件,或是使用非参数检验,对于等级资料,常用非参数检验。

非参数检验对总体分布不作严格假定,又称任意分布检验,它直接对总体分布作假设检验。这里介绍常用的秩转换的非参数检验,是推断一个总体表达分布位置的中位数M和已知𝑀0、两个或多个总体的分布是否有差别。

秩转换的非参数检验是将数值变量从小到大、等级资料从弱到强或从强到弱转换成秩后,再计算检验统计量,其特点是假设检验的结果对总体分布的形状差别不敏感,只对总体分布的位置差别敏感。由于秩统计量的分布与原数据总体分布类型无关,具有较好的稳健性,可以用于任何分布类型的资料。

使用秩转换的非参数检验的情形:

  • 不满足正态和方差齐性条件的计量资料。

  • 分布不知是否正态的小样本资料。

  • 一端或两端不确定数值的资料。

  • 等级资料。

如果已知计量资料满足t检验或F检验条件,应选t检验或F检验。如果选秩转换的非参数检验,会降低检验效能。

秩和检验方法最早由Wilcoxon提出,叫Wilcoxon两样本检验法。后来Mann-Whitney将其应用到两样本容量不等的情况,因而又称为Mann-Whitney U检验。

一、配对样本比较的Wilcoxon符号秩检验(Wilcoxon signed-rank test)

Wilcoxon符号秩检验,又称符号秩和检验,用于配对样本差值的中位数和0的比较。还可用于单个样本中位数和总体中位数比较。

案例:

采用配对设计,用两种饲料喂8对大鼠后,测得其肝中维生素A的含量如下。问不同饲料大鼠肝中维生素A的含量有无差别?

编号

正常饲料组

维生素E缺乏饲料组

1

3.55

2.45

2

2.00

2.40

3

3.00

1.80

4

3.95

3.20

5

3.80

3.25

6

3.75

2.70

7

3.45

2.50

8

3.05

1.75

from scipy import stats
import numpy as np

# 导入数据
data1=np.array([3.55,2.0,3.0,3.95,3.8,3.75,3.45,3.05])
data2=np.array([2.45,2.40,1.80,3.20,3.25,2.70,2.50,1.75])

# 计算两组数据之差
sub=data1-data2

# 对差值进行正态性检验
stats.shapiro(sub)
# Wilcoxon符号秩检验
# stats.wilcoxon()用于检验两个配对样本来自同一分布的原假设。
stats.wilcoxon(data1,data2)

二、两个独立样本比较的Wilcoxon秩和检验(Wilcoxon rank sum test)

Wilcoxon秩和检验用于推断计量资料或等级资料的两个独立样本所来自的两个总体分布是否有差别。

案例

对10例肺癌患者和12例硅沉着0期工人用X线检查测量肺门横径右侧距(RD值),结果如下,问肺癌患者的RD值是否高于硅沉着病0期工人的RD值?

肺癌患者RD值

硅沉着0期病人RD值

2.78

3.23

3.23

3.50

4.20

4.04

4.87

4.15

5.12

4.28

6.21

4.34

7.18

4.47

8.05

4.64

8.56

4.75

9.60

4.82

4.95

5.10

# 输入数据
data1=np.array([2.78,3.23,4.20,4.87,5.12,6.21,7.18,8.05,8.56,9.60])
data2=np.array([3.23,3.50,4.04,4.15,4.28,4.34,4.47,4.64,4.75,4.82,4.95,5.10])

# levene方差齐性检验
stats.levene(data1,data2)

# Wilcoxon秩和检验
stats.ranksums(data1,data2,alternative='greater')

Mann-Whitney U 检验

用于两独立样本的比较,适用情形同Wilcoxon秩和检验。

# Mann-Whitney U检验
stats.mannwhitneyu(data1,data2,alternative='greater')

三、完全随机设计多个样本比较的Kruskal-Wallis H检验

Kruskal-Wallis H检验用于推断计量资料或等级资料的多个独立样本所来自的多个总体分布是否有差别。

原始数据的多个样本比较

案例

比较小白鼠接种三种不同菌型伤寒杆菌9D、11X和DSC1后存活天数,结果如下。问小白鼠接种三种不同菌型伤寒杆菌的存活天数有无差别?

9D

11C

DSC1

2

5

3

2

5

5

2

6

6

3

6

6

4

6

6

4

7

7

4

8

7

5

10

9

7

12

10

7

11

11

data1=np.array([2,2,2,3,4,4,4,5,7,7])
data2=np.array([5,5,6,6,6,7,8,10,12])
data3=np.array([3,5,6,6,6,7,7,9,10,11,11])

stats.kruskal(data1,data2,data3)

频数表资料和等级资料的多个样本比较

某医院用三种方案治疗急性无黄疸型病毒肝炎254例,观察结果如下,问三种方案的疗效有无差别?

疗效

西药组

中药组

中西医结合组

无效

49

45

15

好转

31

9

28

显效

5

22

11

痊愈

15

4

20

data1=np.array(([1]*49+[2]*31+[3]*5+[4]*15))
data2=np.array(([1]*45+[2]*9+[3]*22+[4]*4))
data3=np.array(([1]*15+[2]*28+[3]*11+[4]*20))

stats.kruskal(data1,data2,data3)

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
非参数检验是一种统计学方法,用于对数据进行推断,而不依赖于数据的分布假设。在Python中,有多种非参数检验的方法可以使用。 一种常用的非参数检验方法是Wilcoxon秩和检验,也称为Mann-Whitney U检验。它用于比较两个独立样本的中位数是否存在差异。在Python中,可以使用scipy库的wilcoxon函数进行计算。 另一种常用的非参数检验方法是Kruskal-Wallis检验,用于比较多个独立样本的中位数是否存在差异。在Python中,可以使用scipy库的kruskal函数进行计算。 除了这些方法外,还有其他一些非参数检验方法可以在Python中使用,例如Friedman检验、Runstest等。这些方法可以用于比较两个或多个样本的分布是否存在差异。 综上所述,Python提供了丰富的非参数检验方法,可以根据具体情况选择适合的方法进行数据分析。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [十、非参数检验:使用python进行卡方拟合优度检验](https://blog.csdn.net/qq_35125180/article/details/107370486)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [python非参数检验](https://blog.csdn.net/kylin_learn/article/details/103236611)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值