针对标准化或标准化数据的 T 检验给出不同的结果

数据挖掘 统计数据 正常化 假设检验 推特 p值
2022-02-27 18:06:12

我正在研究预测推文受欢迎程度的问题,并想测试零假设:喜爱计数与另一组变量(如用户的朋友数量)之间没有关系。

我不确定是否对变量进行规范化或标准化,因为我正在考虑如何对流行度进行建模并且不知道用户之间的喜欢和朋友的分布情况如何(请告知)。

所以我尝试了这两个,并尝试了一个独立的t_test。

我得到了非常不同的结果:

from sklearn.preprocessing import StandardScaler, MinMaxScaler
do_scaled = pd.DataFrame(StandardScaler().fit_transform(do[columns].values), columns=columns)

ttest_ind(do_scaled.favorite_count, do_scaled.user_favourites_count)
#Ttest_indResult(statistic=-1.682257624164912e-16, pvalue=0.9999999999999999)

#pvalue is about 1 : the association is likely due to pure chance 

这里是一个显示异常值分布的箱线图(StandardScaler)

在此处输入图像描述

from sklearn.preprocessing import StandardScaler, MinMaxScaler
do_scaled = pd.DataFrame(MinMaxScaler().fit_transform(do[columns].values), columns=columns)

ttest_ind(do_scaled.favorite_count, do_scaled.user_favourites_count)
#Ttest_indResult(statistic=-5.999028611045575, pvalue=2.3988962933916377e-09)

#pvalue is almost 0 (less than 1%) : there is an association between predictor and response.

这是一个显示异常值分布的箱线图(MinMaxScaler)

在此处输入图像描述

我不明白为什么我会得到相反的结果,也不知道如何解释它们。你能建议吗?你能帮忙解决这个问题吗?

1个回答

首先,T 检验零假设是两个样本的均值之间没有差异。而 p 值是观察数据的概率,假设原假设是正确的,所以如果 p 值很小 - 你可能会拒绝原假设。因此,在您的情况下,实际上与您所写的相反:

  • 如果StandardScaler您的测试表明“两个样本取自具有相同均值的分布”^[1]。
  • 如果MinMaxScaler它说“两个样本不太可能从具有相同均值的分布中获取”。

现在到第二部分,为什么你会得到这个结果。答案其实很简单。要计算学生的统计数据,请使用 3 个参数(在比较两个样本的平均值的情况下为 6 个):样本的平均值、样本的方差(或标准差)和样本的大小^[2]。StandardScaler应用 z 评分:

Xstandartized=Xmean(X)std(X)

因此,在标准化后,两列的均值和单位方差均为零,因此学生 t 检验表示两个样本的均值相同(因为它们相同且等于 0)。

相反,MinMaxScaler

Xminmax=Xmin(X)max(X)min(X)

不会使两个样本的均值或方差相等(它使样本的最小值等于 0,最大值等于 1),因此学生 t 检验说它们是不同的。

[1] 更准确地说,您的结果表明您不能拒绝原假设(在统计检验中您永远不能接受原假设)。

[2] 您可以在 wiki 页面上查看 Welch 的 t 检验https://en.wikipedia.org/wiki/Welch%27s_t-test的 t 检验的技术性(两个不同大小样本的未配对独立 T 检验具有不同的方差,这是您案例中测试的适当版本)