【python】描述性统计计算偏斜度和峭度

文章目录

1.编写计算偏斜度和峭度的函数。并用自己编写的函数计算课本23页的习题1.5数据的偏斜度和峭度。


方法一:(套公式)

python 复制代码
import random
import numpy as np
import pandas as pd
data = pd.read_excel("E:\习题1.5数据.xlsx")
data = np.array(data)
data_var = np.var(data) # 计算方差
data_mean = np.mean(data) # 计算均值
data_skewness = np.mean((data-data_mean)**3) # 计算偏斜度
data_kurtosis = np.mean((data-data_mean)**4)/pow(data_var,2) - 3 # 计算峭度
print('偏斜度和峭度:')
print(data_skewness,data_kurtosis,sep='\n')

方式二:(直接函数调用)

python 复制代码
import scipy.stats as stats
data_skewness = stats.skew(data)
data_kurtosis = stats.kurtosis(data)
print('偏斜度和峭度:')
print(data_skewness,data_kurtosis,sep='\n')

2.从1.5数据中随机抽取2个容量为20的样本,分别计算它们的平均数和标准差

python 复制代码
import random
import numpy as np
import pandas as pd
data = pd.read_excel("E:\习题1.5数据.xlsx")
data = np.array(data)
# 随机抽取2个容量为20的样本
data = list(data) # 将数组转为列表
sample1 = random.sample(data,20) # 样本1
sample2 = random.sample(data,20) # 样本2
sample1_mean = np.mean(sample1) # 计算样本1的均值
sample1_std = np.std(sample1) # 计算样本1的标准差
print('样本1的均值和标准差:')
print(sample1_mean,sample1_std,sep='\n')
sample2_mean = np.mean(sample2) # 计算样本1的均值
sample2_std = np.std(sample2) # 计算样本1的标准差
print('样本2的均值和标准差:')
print(sample2_mean,sample2_std,sep='\n')

3.请绘制给定数据的频率分布直方图,计算数据的均值、标准差、偏斜度和峭度。

python 复制代码
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams["font.sans-serif"] = 'Simhei'
plt.rcParams['axes.unicode_minus'] = False

data = pd.read_excel("E:\data.xlsx")
data = np.array(data)
# 计算数据的频率分布
counts,bins = np.histogram(data)
# 绘制直方图
plt.hist(data,bins = bins,align='left',rwidth=0.9)
plt.title('鱼类体长数据的频率分布直方图')
plt.xlabel('鱼的体长')
plt.ylabel('频率')
# 显示图形
plt.show()

data_mean = np.mean(data) # 计算均值
data_var = np.var(data) # 计算方差
data_std = np.std(data) # 计算标准差
data_skewness = np.mean((data-data_mean)**3) # 计算偏斜度
data_kurtosis = np.mean((data-data_mean)**4)/pow(data_var,2) - 3 # 计算峭度
print('均值、标准差、偏斜度、峭度分别为:')
print(data_mean,data_std,data_skewness,data_kurtosis,sep='\n')

4.仿照所给图像,生成p=0.1、0.3、0.5、0.7和0.9的二项分布曲线,作在同一张图上。

python 复制代码
import matplotlib.pyplot as plt
from scipy.stats import binom
import numpy as np
plt.rcParams["font.sans-serif"] = 'Simhei'
plt.rcParams['axes.unicode_minus'] = False

# 指定试验次数n
n = 10
# 指定p值列表
p_values = [0.1, 0.3, 0.5, 0.7, 0.9]
# 绘图
plt.figure()
for i, p in enumerate(p_values):
    # 计算二项分布的概率
    y = binom.pmf(np.arange(n + 1), n, p)
    # 绘制曲线
    plt.plot(np.arange(n + 1), y, label=f'p={p}')

# 设置图表标题和轴标签
plt.title('二项分布曲线')
plt.xlabel('x')
plt.ylabel('概率')
plt.legend()
# 显示图表
plt.show()
相关推荐
ruan11451423 分钟前
Java Lambda 类型推断详解:filter() 方法与 Predicate<? super T>
java·开发语言·spring·stream
猿榜24 分钟前
魔改编译-永久解决selenium痕迹(二)
javascript·python
广东数字化转型26 分钟前
java jar 启动应用程序
开发语言·python
阿幸软件杂货间28 分钟前
阿幸课堂随机点名
android·开发语言·javascript
threelab37 分钟前
three案例 Three.js波纹效果演示
开发语言·javascript·ecmascript
黎明smaly1 小时前
【排序】插入排序
c语言·开发语言·数据结构·c++·算法·排序算法
费弗里1 小时前
Python全栈应用开发利器Dash 3.x新版本介绍(4)
python·dash
辣辣y1 小时前
python基础day08
开发语言·python
花海如潮淹1 小时前
硬件产品研发管理工具实战指南
前端·python
张彦峰ZYF1 小时前
快速掌握Python编程基础
python