【scau统计学】Python实验五计算置信区间并画出支付金额分布图

题目要求:

根据微信每月支付的数据计算出微信支付的月支付95%的置信区间并画出近三年来月支付金额的分布图(为避免隐私问题,数据可以自己构造)

要求分析:

数据构造:

        构造近三年的微信支付数据。由于隐私问题,可以使用随机数来模拟这些数据。

计算置信区间:

        使用统计学的知识来计算95%的置信区间。可以使用scipy.stats库中的函数来计算样本均值的标准误差,并据此构建置信区间。置信区间的计算公式通常是:样本均值 ± z值 * 标准误差,其中z值对应于特定的置信水平(对于95%的置信水平,z值通常是1.96)。

绘制分布图:

        使用matplotlib库来绘制月支付金额的分布图。可以选择绘制直方图或箱线图来展示数据的分布情况。可以在图上标出置信区间的范围,以便更直观地展示结果。

运行结果:

源代码:

import numpy as np
import matplotlib.pyplot as plt
from scipy import stats
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False  # 解决‘-’、中文的显示问题
# 构造模拟数据(近三年共36个月,使用每月的平均值作为示例)
np.random.seed(0)  # 为了结果的可复现性
monthly_payments = np.random.normal(1000, 200, 36)  # 假设平均每月支付1000元,标准差为200元

# 计算95%的置信区间(对于大样本,可以使用正态分布近似)
mean_payment = np.mean(monthly_payments)
std_payment = np.std(monthly_payments, ddof=1)  # ddof=1 是为了得到样本标准差的无偏估计
n = len(monthly_payments)  # 样本大小
conf_interval = stats.norm.interval(0.95, loc=mean_payment, scale=std_payment / np.sqrt(n))

print(f"95%的置信区间是: ({conf_interval[0]:.2f}, {conf_interval[1]:.2f})")

# 画出分布图
plt.figure(figsize=(10, 6))
plt.hist(monthly_payments, bins=15, alpha=0.7, color='b', edgecolor='k', label='微信支付金额分布')
plt.axvline(x=mean_payment, color='r', linestyle='--', label='平均值')
plt.axvspan(conf_interval[0], conf_interval[1], alpha=0.3, color='g', label='95%置信区间')
plt.xlabel('微信支付金额')
plt.ylabel('频率')
plt.title('近三年微信月支付金额分布')
plt.legend()
plt.show()

  • 8
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值