利用Python求数据的极差、均值、中位数、分位数、方差、标准差、标准误、变异系数

import numpy as np
import scipy.stats as st
import pandas as pd
import statsmodels.api as sm
import matplotlib.pyplot as plt
import seaborn as sns

# 正常显示中文标签
plt.rcParams['font.sans-serif'] = ['SimHei']
# 正常显示负号
plt.rcParams['axes.unicode_minus'] = False

# 学生体重测试数据
weights = np.array([75.0, 64.0, 47.4, 66.9, 62.2, 62.2, 58.7, 63.5,
                    66.6, 64.0, 57.0, 69.0, 56.9, 50.0, 72.0])

# 极差
R_weights = np.max(weights) - np.min(weights)
print('体重数据的极差:%0.2f' % R_weights)

# 均值的两种方式
w_mean = np.mean(weights)
w_mean1 = weights.mean()
# 限定范围的数据求均值
limitedMean = st.tmean(weights, (60, 70))  # 排除离群值(只统计60~70之间的数据)::注意不要想当然的排除

# 对数据进行排列
sorted_weig = sorted(weights, reverse=True)

# 求中位数(在对称分布比如正态分布和T分布,均值和中位数很接近;在偏态分布的情况下,比如F分布,均值和中位数相差较大)
median_weig = np.median(weights)
# 分位数
quantiles = np.quantile(weights, [0.1, 0.2, 0.4, 0.6, 0.8, 1])
print('学生体重的[10%,20%,40%,60%,80%,100%]分位数:', quantiles)

# 方差和方差的无偏估计
v = np.var(weights)  # 有偏估计或样本方差::这里的样本误差其实指的是母体误差,也就是说除以的是n而非(n-1)
v_unb = st.tvar(weights)  # 无偏估计,也就是真正意义上的样本误差
print('体重数据方差的估计为:%0.2f,无偏估计为:%0.2f' % (v, v_unb))  # 有一说一,这样写真难受,等我学好fromat后,必不再用0.2f

# 标准差,同样存在有偏和无偏估计
s = np.std(weights)  # 有偏的标准差,同上
s_unb = st.tstd(weights)  # 无偏的标准差,同上
print('体重数据标准差的估计为:%0.2f,无偏估计为:%0.2f' % (s, s_unb))

# 标准误
sm_weights = st.tstd(weights) / np.sqrt(len(weights))
print('体重数据的标准误:%0.2f' % sm_weights)

# 变异系数(标准差的无偏估计除以均值再乘100),无量纲,百分数表示
cv = s_unb / w_mean * 100
print('体重数据的变异系数为:', np.round(cv, 2), '%')

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

亖嘁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值