【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()
相关推荐
懒洋洋大魔王10 分钟前
7.Java高级编程 多线程
java·开发语言·jvm
=(^.^)=哈哈哈10 分钟前
Golang如何优雅的退出程序
开发语言·golang·xcode
学习使我变快乐12 分钟前
C++:用类实现链表,队列,栈
开发语言·c++·链表
茶馆大橘14 分钟前
【黑马点评】已解决java.lang.NullPointerException异常
java·开发语言
lmy_t18 分钟前
C++之第十二课
开发语言·c++
马剑威(威哥爱编程)21 分钟前
除了递归算法,要如何优化实现文件搜索功能
java·开发语言·算法·递归算法·威哥爱编程·memoization
我码玄黄33 分钟前
THREE.js:网页上的3D世界构建者
开发语言·javascript·3d
MuseLss43 分钟前
HashMap高频面试知识点
java·开发语言·哈希算法
tyler-泰勒1 小时前
初始c++:入门基础(完结)
java·开发语言·c++
憨憨小白1 小时前
函数的高级应用
开发语言·python·青少年编程·少儿编程