前面已经详细地讲过数据分析知识体系及实践(七)还有数据分析知识体系及实践(八)里边的内容是, 关于数据的分类事情, 统计学到底是个啥东西, 还有统计学知识的大致分法, 然后数据分析知识体系及实践(九)又把描述性统计的实现办法给讲了, 现在本篇的重点就是要把推断性统计学的代码实现方式拿出来, 具体是几种不同的数据分布情况。
t分布、F分布和卡方分布, 这三个东西, 是统计学里头常用的三种概率分布。它们分别拿来用, 一个是用在样本均值的推断上,一个是用来比较方差, 还有一个是用来做数据的拟合优度检验。在我们去介绍那三大分布的详细内容之前呢, 我们可以先看看什么是正态分布, 并且再顺带看一下标准正态分布是个什么样子。
正态分布( )
正态分布, 这个名称也经常被叫作高斯分布, 它是我们现在做统计学研究的时候, 能够碰见的、出现频率非常高的那种概率分布。它的形状, 也就是那个曲线, 长得很像一口钟, 所以大家都管它叫钟形曲线。在这套规律里头, 有两个数值特别重要, 一个是均值, 另一个是标准差, 它们俩起着决定作用。
import numpy as npimport 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()
标准正态分布( )
标准正态分布算是那种挺特别的正态分布类型, 它这里的平均值给设定成0了, 同时它那边的标准差也定成了1, 咱们搞统计研究的时候, 老是会拿这种玩意儿去处理数据, 让它们标准化起来, 或者是拿来干点假设检验之类的活计。
import numpy as npimport 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 )
t分布是概率分布中的一种, 它的作用是在拿到的样本数据量少的时候, 去推算总体的均值是多少, 当样本容量比较小或者是总体的方差没有已知的情况下, 利用T分布来做推断的话, 准确度会更高一些, T分布的图形样式和正态分布很像, 可是它的尾部部分更宽一点, 这个分布的具体形状是由自由度来决定。
import numpy as npimport 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 )
F分布属于概率分布的一种, 其主要作用是用来对两个样本方差之间的差异进行比较。在方差分析与回归分析这两种场景里头, F分布被广泛地使用。同时, 该分布呈现出怎样的形状特征, 是由分子自由度参数与分母自由度这两个参数共同决定的。
import numpy as npimport 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- )
卡方分布是一种概率分布, 这种概率分布主要被用来检验观察到的数值和理论预期的数值之间存在的某种程度的适合情况, 并且在很多情况下, 它常常会被用于执行拟合优度方面的检验工作, 也会被用于进行有关两个分类变量是否相互独立的检验, 还会在方差分析的环节当中出现, 同时需要注意到的是, 卡方分布的具体形状是由自由度这个参数所决定和影响的, 该参数取值不同, 分布形态也会有相应变化。
import numpy as npimport 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()
下面是本章所对应的完整的代码示例部分。
import numpy as npimport 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()