python使用t检验和F检验验证模型好坏

要在某个指标上对比两个模型的好坏,我们可以直接进行比较,同时为了使比较结果更具说服力,我们可以使用统计检验的方法,即将两个模型分别跑k次,使用t检验比较这两组k个样本的均值、使用F检验比较这两组k个样本的方差,均值越大、方差越小说明在当前指标上该模型更好更稳定(这里说的指标是正向指标)。那么下面我们以具体代码来进行说明。

from scipy.stats import ttest_rel, f
import numpy as np

# 模型一10组实验结果
x = [44.2, 36.1, 46.5, 40.7, 61.6, 55.4, 59.9, 55.2, 65.5, 58.5]
# 模型二10组实验结果
y = [44.1, 35.9, 45.6, 39.5, 60.1, 55.1, 59.9, 54.2, 65.6, 58.2]

print('t检验结果:p值')
print(ttest_rel(x, y))

# 计算组内样本方差
var1 = np.var(x, ddof=1)
var2 = np.var(y, ddof=1)
# 计算统计量F
F = var1 / var2
# 计算自由度
df1 = len(x) - 1
df2 = len(y) - 1
# 计算p值
p_value = 1 - 2 * abs(0.5 - f.cdf(F, df1, df2))
print('F检验结果:p值')
print(p_value)

t检验和F检验结果如下:

t检验结果:p值
Ttest_relResult(statistic=3.048475214454681, pvalue=0.013826970451693616)
F检验结果:p值
0.9824793107664767

可以看到t检验的p值小于0.05,说明拒绝原假设,即两个模型在该指标上取值的均值有差异;F检验的p值大于0.05,说明接受原假设,即两个模型10组结果的稳定程度一致。

我们通过查看均值进一步对两个模型进行比较:

# 模型一实验结果均值
print(np.mean(x))
# 模型二实验结果均值
print(np.mean(y))

 结果为:

52.36
51.82000000000001

通过上述比较,我们可以看到模型一和模型二实验结果稳定程度差不多,但模型一在当前指标上实验结果均值更大,说明模型一优于模型二

参考

Python统计分析-配对样本t检验

在Python中使用P值进行F检验

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值