Friedman Test学习笔记

Friedman Test学习笔记

前言

在实验设计中,常常需要对多个独立样本进行比较,以判断它们是否显著不同。ANOVA(Analysis of Variance)是一种常见的分析方法,但要求数据满足正态性、同方差等假设,适用范围受限。Friedman Test是一种非参数检验方法,可以在数据不满足正态分布等假设时使用,相对应的Friedman-Rank Sum Test可对两个或多个独立样本进行分析。本篇博客主要介绍Friedman Test及其扩展的分析方法。

基本思想

Friedman Test基于秩和,将每个组内的数据排序,然后计算组内秩和。再将所有数据汇总起来,重新排序,计算其秩次。最后根据每个组内的秩和计算出观测值,并得到统计量 F F F。与ANOVA类似,若 F F F值大于一定的临界值,则拒绝原假设,认为组间有显著差异。

与Friedman Test对应的是Friedman-Rank Sum Test,它是由Wilcoxon所提出的非参数检验方法。Friedman-Rank Sum Test用于两个或多个独立样本的显著性检验,其基本思想也是将数据排序并计算秩和。

扩展方法

Friedman Test和Friedman-Rank Sum Test适用于两个或多个独立样本的分析,但在实际应用中,我们常常需要对相关样本进行比较。Kendall’s W是一种扩展方法,可用于对相关样本进行分析。Kendall’s W是对Friedman Test的推广,基于具有序数特征的数据,通过计算单个项目内所有测量值的比对次数,来判断变量是否存在差异性。

对于小样本量的数据,可以使用Monte Carlo法进行模拟。此外,如果我们关心多个组之间的两两比较,可以使用Nemenyi-Damico-Wolfe-Dunn的方法进行多重比较。

Python实现

下面是使用Python进行Friedman Test、Friedman-Rank Sum Test和Kendall’s W分析的示例代码:

import numpy as np
from scipy.stats import friedmanchisquare, rankdata
from itertools import combinations
from statsmodels.stats.multicomp import pairwise_tukeyhsd

# Friedman Test
data = np.array([[3, 3, 2, 4, 5], [4, 7, 6, 8, 8], [2, 2, 1, 3, 4]])
friedman_test = friedmanchisquare(*data)
print('Friedman Test:')
print('Chi-Squared:', friedman_test.statistic)
print('p-value:', friedman_test.pvalue)

# Friedman-Rank Sum Test
data1 = np.array([1, 2, 3, 4, 5])
data2 = np.array([6, 7, 8, 9, 10])
friedman_rank_sum = np.sum(rankdata(np.hstack((data1, data2)))[5:]) - np.sum(np.arange(1, 6))
print('Friedman-Rank Sum Test:')
print('Rank Sum:', friedman_rank_sum)

# Kendall's W
data = np.array([[1, 2, 3], [2, 3, 1], [3, 1, 2]])
n = data.shape[0]
k = data.shape[1]
S = np.sum(np.square(np.sum(data, axis=0)))
W = 12 * S / (n * k ** 2 * (k + 1)) - 3 * n * (k + 1)
print("Kendall's W:")
print('W:', W)

# Nemenyi-Damico-Wolfe-Dunn
comb = combinations(range(data.shape[0]), 2)
p_values = []
for i, j in comb:
    P_val = pairwise_tukeyhsd(data[i], data[j]).pvalue
    p_values.append(P_val)
p_values = np.array(p_values)
print('Nemenyi-Damico-Wolfe-Dunn:')
print('p-values:', p_values)

结语

到这里,Friedman Test及其扩展的内容就介绍完了。Friedman Test是一种非参数检验方法,适用于数据不满足正态分布等假设的情况。除了基本的Friedman Test和Friedman-Rank Sum Test,还有Kendall’s W和Nemenyi-Damico-Wolfe-Dunn等扩展方法可供使用。希望读者通过本文的学习,能够掌握基本的概念和统计方法,并能够熟练应用相关的Python函数进行实现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值