小白学习数分,整理下对统计学基础的学习,大家一起交流嗷~~
目录
一、统计学和概率论的关系
统计学,分为描述统计学和推断统计学,我们一般会使用描述统计学来查看某个事件的状态。使用推断统计学可以预测很多以后事件的发生状态。
概率论是对不确定性事件唯一的量化标准。
因此,概率论为统计学提供了处理不确定性和随机性的数学工具,而统计学则利用这些工具来分析数据并从中提取有用的信息。
二、概率与概率分布
(一)什么是随机变量?
随着试验结果变化而变化的变量。eg:投色子,假设每次出现的点数为X,X有6种可能且每次都是随机的。
特点:
- 具有数值特征;
- 结果是由实验决定的。
(二)离散随机变量及其分布
离散型随机变量:变量的取值个数有限;eg:抛硬币,投色子
1、伯努利分布
描述只有两个可能结果的随机试验,如硬币的正反面。
【概率质量函数(PMF)】为 P(x=1) =p, P(x=0)=1-p
【伯努利分布实例】
假设我们有一个不公平的硬币,抛掷硬币正面朝上的概率为 0.7。我们可以计算抛掷硬币正面朝上(成功)和反面朝上(失败)的概率。
# 设置伯努利分布的参数
p = 0.7 # 成功的概率
# 定义要计算的概率的x值
x_values = np.array([0, 1]) # 计算失败和成功的情况 创建了一个一维数组,包含两个元素:0 和 1。
# 计算概率质量函数
pmf_values = [1 - p, p] #pmf_values是列表
# 输出概率质量函数的值
print("Probability Mass Function (PMF):")
for x, pmf in zip(x_values, pmf_values):
print(f"Probability of {x}: {pmf:.4f}")
# 绘制概率质量函数 (PMF) 图形
plt.figure(figsize=(10, 6))
plt.bar(x_values, pmf_values, align='center', alpha=0.7)
plt.title("Bernoulli Distribution PMF")
plt.xlabel("Outcome")
plt.ylabel("Probability")
plt.xticks(x_values, ['Failure', 'Success'])
plt.grid(True)
plt.show()
输出结果:
2、二项分布
描述多次独立伯努利试验的概率。也就是说在n次试验中正好得到k次成功的概率。
【概率质量函数(PMF)】
- n:伯努利试验的总数。
- p:每次试验成功的概率。
- k:成功的次数。
:组合数,表示从 n 个不同元素中选取 k个元素的方式数目
【二项分布实例】
假设一家公司想要测试一项新的营销策略是否会提高产品的销量。他们随机选择了 500 名顾客进行了营销活动,结果发现其中有 120 名顾客购买了该产品。他们想知道这次活动是否显著提高了销量。
【步骤1】设定假设
- 原假设 H0:营销活动没有显著提高销量,即购买率 p 与历史数据一致。
- 备择假设 H1:营销活动显著提高了销量,即购买率 p>p历史
【步骤2】计算概率
我们需要计算观察到至少 120 人购买的概率。为了简化计算,我们将使用二项分布的累积分布函数(CDF)来计算观察到 120 人或更多人购买的概率。
【步骤3】计算二项分布CDF
给定n=500,p=0.20
【步骤4】计算P
import scipy.stats as stats
n = 500 # 样本容量
p = 0.20 # 历史购买率
k = 119 # 观察到的人数
# 计算 P(X < 120)
p_value = 1 - stats.binom.cdf(k, n, p)
【步骤 5】 决策
假设我们选择的显著性水平 α=0.05。如果计算出的 P-value 小于 α,则拒绝原假设 H0。
这意味着我们可以认为新的营销策略确实提高了购买率,从而显著增加了销量。
【补充】
- PMF 描述了随机变量在每个可能值上的概率。
- CDF 描述了随机变量小于或等于某个值的概率。
3、泊松分布
它描述的是单位时间内随机事件发生的次数,特别是在事件发生的平均速率已知的情况下。
PMF:
- X 是随机变量,表示在给定的时间间隔内事件发生的次数。
- k 是事件发生的次数。
- λ 是单位时间内事件发生的平均次数。
- e是自然对数的底数(约等于 2.71828)。
【泊松分布实例】
假设一家医院急诊室平均每小时接诊 3 位病人。我们可以使用泊松分布来预测在某一小时内心急室接诊不同次数病人的概率。
- 参数:λ=3(每小时平均接诊的病人次数)。
- 计算:我们可以计算在一小时内接诊 0、1、2、3、4、5、6、7、8、9 位病人的概率。
from scipy.stats import poisson
# 设置泊松分布的参数
lambda_val = 3 # 每小时平均接诊的病人次数
# 定义要计算的概率的x值
x_values = np.arange(0, 10) # 计算0到9位病人的情况
# 计算概率质量函数
pmf_values = poisson.pmf(x_values, lambda_val)
# 输出概率质量函数的值
print("Probability Mass Function (PMF):")
for x, pmf in zip(x_values, pmf_values):
print(f"Probability of {x} patients: {pmf:.4f}")
# 绘制概率质量函数 (PMF) 图形
plt.figure(figsize=(10, 6))
plt.bar(x_values, pmf_values, align='center', alpha=0.7)
plt.title("Poisson Distribution PMF")
plt.xlabel("Number of Patients")
plt.ylabel("Probability")
plt.grid(True)
plt.show()
# 计算累积分布函数
cdf_values = poisson.cdf(x_values, lambda_val)
# 输出累积分布函数的值
print("\nCumulative Distribution Function (CDF):")
for x, cdf in zip(x_values, cdf_values):
print(f"Cumulative probability up to {x} patients: {cdf:.4f}")
# 绘制累积分布函数 (CDF) 图形
plt.figure(figsize=(10, 6))
plt.plot(x_values, cdf_values, marker='o')
plt.title("Poisson Distribution CDF")
plt.xlabel("Number of Patients")
plt.ylabel("Cumulative Probability")
plt.grid(True)
plt.show()
(三)连续随机变量及其分布
连续型随机变量:变量在区间内取任意值;eg:体积,面积等【是一种度量】
概率密度函数(PDF):用于是描述连续型随机变量概率分布得函数。它提供了连续型随机变量在某个特定值附近的相对可能性的度量。
ps:与离散型随机变量的概率质量函数(PMF)不同,概率密度函数不直接给出特定值的概率,而是给出了概率的密度。
对于一个连续型随机变量 X,其概率密度函数 f(x)满足以下条件:
- 非负性:对于所有 x,有 f(x)≥0。
- 归一化:概率密度函数在整个实数轴上的积分等于 1。
- 概率解释:对于任意区间 [a,b]内,随机变量 X 落入此区间的概率由 f(x) 在该区间上的积分给出。
ps:概率密度函数 f(x)在某一点 x上的值并不直接表示该点的概率,而是表示在该点附近单位长度内的概率。对于连续型随机变量,单个点的概率实际上为零,因为有无限多个可能的值。概率密度函数 f(x)实际上给出了在某个小区域内随机变量出现的概率密度。
1、正态分布
其概率密度函数 (PDF) 形状为钟形曲线。正态分布由两个参数决定:均值 (μ) 和标准差 (σ)。
【举例】
假设你是一位市场分析师,正在研究一款针对年轻人的新产品。通过分析年龄分布,你发现消费者的年龄分布接近正态分布,均值约为 25 岁,标准差约为 5 岁。这意味着大部分消费者年龄集中在 20 到 30 岁之间。
基于这一信息,你可以做出以下决策:
- 目标市场定位:明确目标市场主要是 20 至 30 岁的年轻人。
- 产品设计:根据目标市场的偏好设计产品功能和外观。
- 营销策略:选择适合年轻人群体的营销渠道,比如社交媒体和在线广告。
- 定价策略:考虑年轻人的消费能力和支付意愿来制定合理的价格。
【代码实现】
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import norm
from scipy.stats import shapiro
# 数据集
ages = [25, 27, 29, 30, 31, 32, 33, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108,
109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130,
131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152,
153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174,
175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196,
197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218,
219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 38, 239, 240,
241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262,
263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300]
# 计算样本均值和标准差
sample_mean = np.mean(ages)
sample_std_dev = np.std(ages, ddof=1) # 使用无偏估计
# Shapiro-Wilk 正态性检验
stat, p = shapiro(ages) # stat:返回度量值(度量数据与正态分布得吻合程度)
# p:概率值(用于评估拒绝原假设的概率,即数据不是来自正态分布的概率。)
# 输出检验结果
print(f"Shapiro-Wilk Test Statistic: {stat:.4f}")
print(f"P-value: {p:.4f},stat:{stat:.4f}")
# 拟合正态分布
x = np.linspace(min(ages), max(ages), 100) #生成一系列值,这些值从最小的消费金额到最大的消费金额,共 100 个点
pdf_values = norm.pdf(x, sample_mean, sample_std_dev) #计算正态分布的概率密度函数值
# 绘制正态分布
plt.figure(figsize=(10, 6))
plt.hist(ages, bins=20, density=True, alpha=0.6, color='b', label='Histogram') #绘制消费金额数据的直方图
plt.plot(x, pdf_values, 'r-', linewidth=2, label='PDF') #绘制正态分布的概率密度函数曲线
plt.title("Age Distribution with Normal Fit")
plt.xlabel("Age")
plt.ylabel("Frequency")
plt.legend()
plt.grid(True)
plt.show()
# 输出正态性检验结果
if p > 0.05:
print("Data is likely normally distributed.")
else:
print("Data does not appear to be normally distributed.")
(四)多维随机变量及其分布
在一次试验中可以同时观察到多个随机变量的情况。这些随机变量可以是连续的、离散的,或者是两者的组合。
多维随机变量的联合分布描述了这些随机变量共同取值的概率分布。
1、边缘分布
从一个多维随机变量的联合分布中提取出单个随机变量的分布。
无论是离散型还是连续型随机变量,边缘分布都非常有用,因为它允许我们关注单个随机变量的统计特性,而不考虑其他随机变量的影响。
以下以二维为例:
联合概率质量函数: p(x,y)描述了 X 和 Y 同时取值的概率。
边缘概率质量函数 :pX(x) 和 pY(y) 分别描述了随机变量 X 和 Y 的单独分布。
(1)离散型随机变量
边缘概率质量函数的计算公式为:
(2)连续型随机变量
边缘概率密度函数的计算公式为:
【边缘分布计算实例】
假设我们有两个连续型随机变量 X 和 Y,它们的联合概率密度函数 f(x,y) 为:
其中 cc是一个常数,使得 f(x,y)成为一个有效的概率密度函数。
(1)计算常数 c
为了使 f(x,y)成为一个有效的概率密度函数,我们需要确保它的积分等于 1:
对于给定的 f(x,y),我们只在 0<x<1 和 0<y<1的区域内计算积分:
计算上述积分以求解c:
因此,c=6。
(2)计算边缘概率密度函数
对于 0<x<1,fX(x)=3x;对于其他值,fX(x)=0。
对于 0<y<1,fY(y)=3y;对于其他值,fY(y)=0。
(3)代码实现
#########边缘分布的计算
import numpy as np
import matplotlib.pyplot as plt
# 定义联合概率密度函数
def joint_pdf(x, y):
if 0 < x < 1 and 0 < y < 1:
return 6 * x * y
else:
return 0
# 生成数据点
x = np.linspace(0, 1, 100)
y = np.linspace(0, 1, 100)
# 计算边缘概率密度函数
fx = 3 * x # 已经计算好的边缘概率密度函数 f_X(x)
fy = 3 * y # 已经计算好的边缘概率密度函数 f_Y(y)
# 绘制边缘概率密度函数
plt.figure(figsize=(10, 6))
# 绘制 f_X(x)
plt.subplot(1, 2, 1)
plt.plot(x, fx)
plt.title('Marginal PDF of X')
plt.xlabel('x')
plt.ylabel('f_X(x)')
plt.grid(True)
# 绘制 f_Y(y)
plt.subplot(1, 2, 2)
plt.plot(y, fy)
plt.title('Marginal PDF of Y')
plt.xlabel('y')
plt.ylabel('f_Y(y)')
plt.grid(True)
plt.tight_layout()
plt.show()
【数分场景举例】
收集到了一组关于用户购买金额和购买频率的数据。通过这两个变量的边缘分布,以便更好地理解用户的购买金额分布和购买频率分布。
(1)没有联合概率函数的情况下,怎么求得边缘函数?
实际上,在没有联合概率密度函数 f(x,y)f(x,y) 的情况下,我们仍然可以直接从数据中估计边缘概率密度函数。
对于离散型随机变量,边缘概率质量函数可以通过计算每个可能值出现的频率来估计。
对于连续型随机变量,边缘概率密度函数可以通过估计数据的密度来获得。
(2)求得边缘函数之后,我们可以得到出什么判断?
1)购买金额的边缘概率密度函数
购买金额的边缘概率密度函数 fX(x) 描述了用户在特定金额范围内进行购买的概率密度。通过这个函数,我们可以了解到:
消费能力分布:边缘概率密度函数的形状可以告诉我们用户的消费能力分布。例如,如果边缘概率密度函数显示大部分用户的购买金额集中在较低的区间,那么我们可以推断这部分用户的消费能力相对较低;相反,如果购买金额集中在较高的区间,则表明这部分用户的消费能力较高。
消费偏好:通过边缘概率密度函数,我们可以观察到用户倾向于在哪种价格区间的商品上花费。例如,如果函数显示在某个价格区间有一个峰值,那么我们可以推测用户偏好购买该价格区间内的商品。
2)购买频率的边缘概率密度函数
购买频率的边缘概率密度函数 fY(y)描述了用户在特定时间内进行购买的次数的概率密度。通过这个函数,我们可以了解到:
购物习惯:边缘概率密度函数的形状可以告诉我们用户的购物习惯。例如,如果边缘概率密度函数显示大部分用户的购买频率集中在较低的区间,那么我们可以推断这部分用户购物较为谨慎或偶尔购物;相反,如果购买频率集中在较高的区间,则表明这部分用户购物频繁。
忠诚度:购买频率的边缘概率密度函数还可以帮助我们了解用户的忠诚度。如果用户的购买频率较高,这可能意味着他们对该品牌或产品有一定的忠诚度
(五)随机变量的数字特征
利用概率函数了描述随机变量,本章我们学习用常量来描述随机变量,主要包括三个方面:集中度量,离散程度,与其它变量的相关性
1、集中度量
期望:可以理解为平均值,概率(大量重复实验得出的频率,eg:班级里三个同学,一个60,两个80,60*1/3+80*2/3=平均分)
2、离散程度
方差:随机变量与均值的差距
3、与其它变量的相关性
协方差
如果协方差为正,意味着同正,即正相关;反之,则为负相关。