📜  情绪中位数检验(1)

📅  最后修改于: 2023-12-03 15:39:37.595000             🧑  作者: Mango

情绪中位数检验

情绪中位数检验(Mood’s Median Test)是一种非参数假设检验方法,用于比较两组或多组不相关样本的中位数是否相等。通常用于评估有限样本集合之间的差异,并且不需要假设数据符合任何特定分布。

使用场景

情绪中位数检验适用于以下情况:

  • 比较两个或多个组的中心趋势
  • 样本数据不符合正态分布或者样本数据不是连续型变量
  • 样本大小不同,并且不能对这些大小进行独立的检验
原理与步骤

情绪中位数检验是通过计算每个组的中位数并将它们合并成一个共同的排名列表,然后计算每个组的样本值相对于这个排名列表预期中的值有多远。最终,使用卡方检验的方法来确定这些偏差是否足够大,以使我们相信组的中位数不同。

情绪中位数检验的步骤如下:

  1. 将每个组的样本按照数值从小到大排列。
  2. 找到各组的中位数,并将它们放在一起形成一个排名表。每个排名列表示样本的排序排名。
  3. 计算每个组中的每个样本预期的排名$E_i=\frac{(n_R+1)R_i}{N}$,其中$n_R$是所有个体的数量,$R_i$是$i$组人数,$N$代表所有组的总人数。
  4. 对于每个组中的每个样本,计算实际排名$O_i$。
  5. 计算每个组中的每个样本的卡方值$\chi^2=\frac{(O_i-E_i)^2}{E_i}$。
  6. 将卡方值累加为总和,$\chi^2_{total}=\sum_{i=1}^k\chi^2$,其中$k$是组数。
  7. 使用卡方分布表和自由度$k-1$,确定P值。
示例代码

下面是一些示例代码,用于说明如何在Python和R中执行情绪中位数检验。

Python
import scipy.stats as stats

# 三组数据
x = [10, 14, 12, 18, 16]  # 第一组
y = [8, 6, 11, 9, 13, 10]  # 第二组
z = [12, 11, 13, 14, 10]  # 第三组

# 运行 Mood 中位数检验
stat, p_value, median_scores = stats.median_test(x, y, z)

print(f"统计值: {stat}")
print(f"P值: {p_value}")
print(f"排名表: {median_scores}")
R
# 三组数据
x = c(10, 14, 12, 18, 16)  # 第一组
y = c(8, 6, 11, 9, 13, 10)  # 第二组
z = c(12, 11, 13, 14, 10)  # 第三组

# 运行 Mood 中位数检验
mood_result = mood.medtest(x, y, z)
mood_result

# 统计值,第一个元素
mood_result$statistic

# P值,第二个元素
mood_result$p.value

# 排名表,第三个元素
mood_result$data
结论

情绪中位数检验是一种可靠的非参数检验方法,用于比较两个或多个样本集合之间的中位数是否存在显著性差异。在真实的数据集中,往往存在着不方便或很困难进行数据分组和归一化的情况,此时我们可以使用情绪中位数检验来完成数据的分析和比较。