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

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

在这里插入图片描述
在这里插入图片描述
方法一:(套公式)

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')

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

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的样本,分别计算它们的平均数和标准差

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.请绘制给定数据的频率分布直方图,计算数据的均值、标准差、偏斜度和峭度。

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的二项分布曲线,作在同一张图上。

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()

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 峭度是用来衡量数据分布的尖锐程的统计量,它描述了数据分布的尖峭或平缓程。在Python中,可以使用SciPy库的kurtosis()函数来计算峭度。 首先,我们需要导入SciPy库: import scipy.stats as stats 接下来,我们需要准备一组数据来计算峭度。假设我们有一个包含100个数值的数据集,可以将其存储在一个列表中: data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, ...] 然后,我们可以使用kurtosis()函数来计算数据的峭度。将数据列表作为函数的输入参数,并将结果保存在一个变量中: kurtosis_value = stats.kurtosis(data) 最后,我们可以打印出计算得到的峭度值: print("峭度值为:", kurtosis_value) 这样,我们就用Python计算出了数据的峭度峭度值可以是正值、负值或零,其中正值表示数据分布比较尖峭,负值表示数据分布比较平缓,零表示数据分布是正态分布。 需要注意的是,计算峭度前最好对数据进行标准化处理,以消除数据尺的影响。标准化可以使用scikit-learn库的StandardScaler类来实现。另外,在使用峭度进行数据分析时,还需要结合其他统计量和可视化方法来进行综合分析。 ### 回答2: 峭度是衡量数据分布陡峭度与正态分布之间差异程的统计学量。在Python中,可以使用第三方库scipy中的stats模块来计算峭度。下面以一个示例进行说明: ```python import numpy as np from scipy import stats # 生成一组随机数据 data = np.random.normal(0, 1, 100) # 计算峭度 kurtosis_value = stats.kurtosis(data) print("峭度值为:", kurtosis_value) ``` 运行上述代码,就可以得到随机数据的峭度值。其中,np.random.normal函数用于生成100个服从标准正态分布的随机数。stats.kurtosis则用于计算数据的峭度值。最后,将峭度值打印出来。 需要注意的是,在计算峭度时,如果数据集是样本而不是总体,还可以设置bias参数为False来修正偏差。示例如下: ```python kurtosis_value = stats.kurtosis(data, bias=False) ``` 通过以上的方法,可以使用Python计算峭度并对数据分布的陡峭程做出量化评估。 ### 回答3: 计算峭度是衡量数据分布陡峭度或平缓的一种统计量,用于描述数据分布的尖峰或平坦程Python中可以使用第三方库scipy中的stats模块来计算峭度。 首先,我们需要导入相应的库和模块: ``` import numpy as np import scipy.stats as stats ``` 接下来,我们可以定义一个示例数据集: ``` data = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) ``` 然后,使用stats.kurtosis函数来计算数据集的峭度: ``` kurtosis = stats.kurtosis(data) ``` 峭度计算依赖于特定的算法和公式,`stats.kurtosis`函数默认使用了峭度计算的通用公式。计算结果将返回一个表示峭度的数值。 最后,我们可以打印出计算得到的峭度值: ``` print("数据集的峭度为:", kurtosis) ``` 这样就能够使用Python计算数据集的峭度了。峭度的结果可以帮助我们理解数据的分布特征,例如正态分布的峭度为0,正峰态分布的峭度大于0,负峰态分布的峭度小于0。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

柴妮贝贝

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

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

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

打赏作者

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

抵扣说明:

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

余额充值