企业项目管理、ORK、研发管理与敏捷开发工具平台

网站首页 > 精选文章 正文

数据分析知识体系及实践(十)- 推断性统计的Python实现

wudianyun 2025-02-18 13:43:02 精选文章 20 ℃

数据分析知识体系及实践(七)和数据分析知识体系及实践(八)介绍了数据的分类、统计学是什么、以及统计学知识的大分类,数据分析知识体系及实践(九)介绍了描述性统计的Python实现,本篇我们重点介绍推断性统计学的Python代码实现几种数据分布。

t分布、F分布和卡方分布是统计学中常用的三种概率分布,它们分别用于样本均值的推断、方差的比较和数据的拟合优度检验。我们在介绍三大分布之前,先看一下正态分布和标准正态分布。

正态分布(Normal Distribution)

正态分布也被称为高斯分布,是统计学中最常见的概率分布之一,具有钟形曲线的特征,均值和标准差是其两个重要的参数。

import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt

mean = 3  # 均值
std = 4  # 标准差
size = 1000  # 生成1000个随机数

data = np.random.normal(mean, std, size=size)
sns.histplot(data, kde=True)
plt.show()

标准正态分布(Standard Normal Distribution)

标准正态分布是一种特殊的正态分布,其均值为0,标准差为1。在统计学中,标准正态分布经常用于标准化数据或进行假设检验。

import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt

size = 1000  # 生成1000个随机数

data = np.random.standard_normal(size=size)
sns.histplot(data, kde=True)
plt.show()

t分布(t Distribution)

t分布是一种概率分布,用于小样本情况下对总体均值的推断。当样本容量较小或总体方差未知时,使用T分布进行推断更准确。T分布的形状类似于正态分布,但尾部较宽。T分布的自由度(degreesof freedom)决定了其形状。

import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt

df = 10  # 自由度
size = 1000  # 生成1000个随机数

data = np.random.standard_t(df, size=size)
sns.histplot(data, kde=True)
plt.show()

F分布(F Distribution)

F分布是一种概率分布,用于比较两个样本方差的差异。F分布常用于方差分析和回归分析中。F分布的形状取决于两个自由度参数,分子自由度和分母自由度。

import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt

dfn = 5  # 分子自由度
dfd = 10  # 分母自由度
size = 1000  # 生成1000个随机数

data = np.random.f(dfn, dfd, size=size)
sns.histplot(data, kde=True)
plt.show()

卡方分布(Chi-Square Distribution)

卡方分布是一种概率分布,用于检验观察值与理论值之间的拟合优度。卡方分布常用于拟合优度检验、独立性检验和方差分析中。卡方分布的自由度参数决定了其形状。

import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt

df = 5  # 自由度
size = 1000  # 生成1000个随机数

data = np.random.chisquare(df, size)
sns.histplot(data, kde=True)
plt.show()

本章Python完整代码示例如下

import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt

# 正态分布 Normal Distribution
mean = 3  # 均值
std = 4  # 标准差
size = 1000  # 生成1000个随机数

data = np.random.normal(mean, std, size=size)
sns.histplot(data, kde=True)
# plt.show()

# 标准正态分布 Standard Normal Distribution
size = 1000  # 生成1000个随机数

data = np.random.standard_normal(size=size)
sns.histplot(data, kde=True)
# plt.show()

# t分布 t Distribution
df = 10  # 自由度
size = 1000  # 生成1000个随机数

data = np.random.standard_t(df, size=size)
sns.histplot(data, kde=True)
# plt.show()

# F分布 F Distribution
dfn = 5  # 分子自由度
dfd = 10  # 分母自由度
size = 1000  # 生成1000个随机数

data = np.random.f(dfn, dfd, size=size)
sns.histplot(data, kde=True)
# plt.show()

# 卡方分布 Chi-square Distribution
df = 5  # 自由度
size = 1000  # 生成1000个随机数

data = np.random.chisquare(df, size)
sns.histplot(data, kde=True)
plt.show()

Tags:

最近发表
标签列表