一、基础概念
1)因果关系不确定性
2)随机程序
如果一个程序运行时使用相同输入就会产生相同输出,那么这个程序就是确定性的。在随机过程中,如果一个事件的结果不会影响另一个事件的结果,我们就称这两个事件是相互独立的。
3)计算简单概率
讨论具有某种特性的结果的概率时,实际上是想知道在所有结果中,具有这种特性的结果占多少比例。这就是概率取值范围在0~1的原因。
独立概率的乘法法则。举例来说,考虑两个独立事件A和B。如果A发生的概率是1/3,B发生的概率是1/4,那么A和B同时发生的概率就是(1/3) × (1/4)。
概率不能大于1。
4)统计推断
统计推断的指导原则就是:一个从总体数据中随机抽取的样本往往可以表现出与总体相同的特性。
5)分布
概率分布,是指用于表述随机变量取值的概率规律。事件的概率表示了一次试验中某一个结果发生的可能性大小。若要全面了解试验,则必须知道试验的全部可能结果及各种可能结果发生的概率,即随机试验的概率分布。
离散型随机变量;连续性随机变量
6)正态分布
正态分布(Normal distribution)又名高斯分布(Gaussian distribution),是一个很重要的概率分布,在统计学的很多方面有着重大的影响力。
若随机变量X服从一个数学期望为μ、标准方差为σ2的高斯分布,记为:
X∼N(μ,σ2),
则其概率密度函数为
正态分布的期望值μ决定了其位置,其标准差σ决定了分布的幅度。因其曲线呈钟形,因此人们又常常称之为钟形曲线。我们通常所说的标准正态分布是μ = 0,σ = 1的正态分布。
7)抽样与置信区间
抽样:统计量是样本的函数,是一个随机变量,统计量的分布称为抽样分布。在使用统计量进行统计推断时常常需要知道它的分布。当总体的分布已知时,抽样分布是确定的,但是要求出统计量的精确分布,一般来说是不容易的。 所以我们采用基于正态总体的常用统计量的分布。
置信区间是指由样本统计量所构造的总体参数的估计区间。在统计学中,一个概率样本的置信区间(Confidence interval)是对这个样本的某个总体参数的区间估计。置信区间展现的是这个参数的真实值有一定概率落在测量结果的周围的程度。置信区间给出的是被测量参数的测量值的可信程度,即前面所要求的“一个概率”。
二. 练习
1)总结实现概率
import numpy as np
from scipy import stats
import matplotlib.pyplot as plt
'''
# 二项分布 (binomial distribution)
# 前提:独立重复试验、有放回、只有两个结果
# 二项分布指出,随机一次试验出现事件A的概率如果为p,那么在重复n次试验中出现k次事件A的概率为:
# f(n,k,p) = choose(n, k) * p**k * (1-p)**(n-k)
'''
# ①定义二项分布的基本信息
p = 0.4 # 事件A概率0.4
n = 5 # 重复实验5次
k = np.arange(n+1) # 6种可能出现的结果
#k = np.linspace(stats.binom.ppf(0.01,n,p), stats.binom.ppf(0.99,n,p), n+1) #另一种方式
# ②计算二项分布的概率质量分布 (probability mass function)
# 之所以称为质量,是因为离散的点,默认体积(即宽度)为1
# P(X=x) --> 是概率
probs = stats.binom.pmf(k, n, p)
#array([ 0.07776, 0.2592 , 0.3456 , 0.2304 , 0.0768 , 0.01024])
#plt.plot(k, probs)
# ③计算二项分布的累积概率 (cumulative density function)
# P(X<=x) --> 也是概率
cumsum_probs = stats.binom.cdf(k, n, p)
#array([ 0.07776, 0.33696, 0.68256, 0.91296, 0.98976, 1. ])
# ④根据累积概率得到对应的k,这里偷懒,直接用了上面的cumsum_probs
k2 = stats.binom.ppf(cumsum_probs, n, p)
#array([0, 1, 2, 3, 4, 5])
# ⑤伪造符合二项分布的随机变量 (random variates)
X = stats.binom.rvs(n,p,size=20)
#array([2, 3, 1, 2, 2, 2, 1, 2, 2, 3, 3, 0, 1, 1, 1, 2, 3, 4, 0, 3])
#⑧作出上面满足二项分布随机变量的频数直方图(类似group by)
plt.hist(X)
#⑨作出上面满足二项分布随机变量的频率分布直方图
plt.hist(X, normed=True)
plt.show()
2)区间估计
import scipy.stats
import numpy as np
import pandas as pd
import matplotlib.mlab as mlab
import matplotlib.pyplot as plt
%config InlineBackend.figure_format ='retina'
plt.rcParams['font.sans-serif']=['SimHei']#用来正常显示中文标签
standard_norm = scipy.stats.norm#标准正态分布
t_dist = scipy.stats.t#标准t分布
x = np.arange(-4,4,0.01)
plt.plot(x, standard_norm.pdf(x), label='standard normal',alpha=0.5)
plt.plot(x, t_dist.pdf(x, df=30), label='t distribution',alpha=0.5)
plt.title('自由度为30的t分布 与 标准正态分布 对比图')
plt.legend()
plt.show()