大数定律与中心极限定理详解-- 潘登同学的数理统计笔记
大数定律
只有理解了大数定律才理解了数理统计是一个由现实到理论的学科,概率是由频率无限趋近的一个理想概念
切比雪夫不等式
设随机变量X,其数学期望,则对于任意正数,有
推导
推到完了,再来定性的分析一下
- 如果很大,那么理所当然的很小,与右侧的在分母上吻合;
- 如果这个随机变量的方差很大,那么就会有较多的随机变量偏离均值,理所当然会大,与右侧的在分母上吻合;
依概率收敛
依概率收敛就是那个由现实到理论的最最重要的一个桥梁了
设随机变量,{}独立同分布,且, 则对于任意,有
推导
深刻理解为什么叫依概率收敛
- 这里的是一次随机事件的结果,而是这n次随机事件的平均结果
- 这里的是总体参数,可以理解为客观规律,这个随机事件客观上的平均结果是(上帝才知道的一个数值)
- 而这个上面的这个式子表示的是如果我们做无穷次的实验,我们得到的平均结果与客观规律的值一样
所以原本只有上帝能知道的总体参数,被我们做无数次实验后知道了。
其实这个总体参数也可以理解为概率,就拿抛硬币举例子,想知道正面朝上的概率为多少,就设 事件A:在一次实验中是否正面朝上,是则1,否则0
,然后做无数次, 得到的就是硬币正面朝上的概率;
正确表述依概率收敛
设是一个随机变量序列,a是一个常数,若对于任意正数,都有
则称序列依概率收敛于a,记为
中心极限定理
中心极限定理是用于刻画抽样分布服从正态分布的一个定理
深刻理解为什么要抽样
- 根据上面讲的依概率收敛,其实只有去做无数次实验才能逼近那个总体参数,那么我们的观测样本理应是总体才对
- 但是观测总体的代价太大了,我们想只从中随机抽出一些样本,通过样本来推测总体
深刻理解为什么要有中心极限定理
- 但是根据前面的依概率收敛,只要n不是∞,那么样本均值就不是总体参数(数值上),但他肯定不会与他相差太远,因为样本也是从总体中抽出来的
- 但是具体相差多少呢,这个抽样结果到底服从什么样的分布呢?
一次样本数为(足够大),均值为的抽样,抽样结果服从正态分布
其中,总体均值为,总体方差为,不论总体服从何种分布
直观感受
以三个总体为例,三个总体分别服从均匀分布、卡方分布、指数分布,抽样的样本分别为2、20、200,观察总体分布于抽样分布
可以看出,当n越大,抽样分布就越接近正态分布;这就是中心极限定理!
- 贴上代码
#%% 各种分布及其抽样分布
import numpy as np
import matplotlib.pyplot as plt
import scipy.stats as st
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
def plt_sample(a, b, n, lam, sample_list):
'''
Parameters
----------
a : float
均匀分布的左端点
b : float
均匀分布的右端点
n : int
卡方df自由度
lam : float
指数分布的 λ
sample_list: [x,y]
传入一个数组表示抽几次样 for example: [5, 10]
Returns
-------
pk : float
累计概率.
plt : figure
分布函数与抽烟分布
'''
y = np.linspace(0, 15, 101)
plt.figure(figsize=(16,12))
plt.subplot(431) # 均匀分布
p_uniform = st.uniform.pdf(y, a, b)
delta_y = y[1]-y[0]
result_uniform = []
for i,j in enumerate(p_uniform):
if i == 0:
result_uniform.append(j*delta_y)
else:
result_uniform.append(result_uniform[i-1] + j*delta_y)
plt.plot(y, result_uniform, 'red')
plt.xticks([]) #去掉x轴
plt.title('[%d,%d]区间上的均匀分布分布函数'%(a,b))
plt.subplot(432) # 卡方分布
p_chi = st.chi2.pdf(y, df=n)
delta_y = y[1]-y[0]
result_chi = []
for i,j in enumerate(p_chi):
if i == 0:
result_chi.append(j*delta_y)
else:
result_chi.append(result_chi[i-1] + j*delta_y)
plt.plot(y, result_chi, 'blue')
plt.xticks([]) #去掉x轴
plt.title('df=%d时卡方分布分布函数'%(n))
plt.subplot(433) # 指数分布
p_exp = st.expon.pdf(y, scale=1/lam)
result_exp = []
for i,j in enumerate(p_exp):
if i == 0:
result_exp.append(j*delta_y)
else:
result_exp.append(result_exp[i-1] + j*delta_y)
plt.plot(y, result_exp, 'red')
plt.xticks([]) #去掉x轴
plt.title('λ=%d时指数分布分布函数'%(lam))
for j in range(3):
plt.subplot(4,3,3*j+4) # 均匀分布的抽样
sample_result = []
for i in range(1000):
sample_result.append(np.random.choice(y,size=sample_list[j],p=p_uniform*delta_y/((p_uniform*delta_y).sum())).mean())
plt.hist(sample_result,color='red')
plt.xticks([]) #去掉x轴
plt.title('[%d,%d]区间上的均匀分布的样本量为%d的抽样分布'%(a,b,sample_list[j]))
plt.subplot(4,3,3*j+5) # 卡方分布的抽样
sample_result = []
for i in range(1000):
sample_result.append(np.random.choice(y,size=sample_list[j],p=p_chi*delta_y/((p_chi*delta_y).sum())).mean())
plt.hist(sample_result,color='blue')
plt.xticks([]) #去掉x轴
plt.title('df=%d时卡方分布分布函数的样本量为%d的抽样分布'%(n,sample_list[j]))
plt.subplot(4,3,3*j+6) # 指数分布的抽样
sample_result = []
for i in range(1000):
sample_result.append(np.random.choice(y,size=sample_list[j],p=p_exp*delta_y/((p_exp*delta_y).sum())).mean())
plt.hist(sample_result,color='blue')
plt.xticks([]) #去掉x轴
plt.title('λ=%d时指数分布分布函数的样本量为%d的抽样分布'%(lam,sample_list[j]))
plt.show()
if __name__=='__main__':
plt_sample(0, 5, 4, 2, [2,20,200])
依据中心极限定理做假设检验
举个例子:
小潘同学说:东北财经大学的同学的平均身高是170cm;而你想验证小潘说的对不对;于是你去做了一个抽样,发现样本均值是165cm;于是你陷入了沉思...
问题
:到底是你抽样偏误导致了你的结果与小潘同学的说法不同,还是小潘同学说的就是错的呢?
直观上的分析,如果你的抽样抽取了所有人的身高,那么得到的显然就是总体参数;如果你只抽一个人,那么你偏离总体参数的概率就越大;所有你的抽样到底有多接近总体参数取决于你的样本数;
下面给出假设检验的一般步骤
- 原假设: : 东北财经大学的同学的平均身高是170cm,即
- 确定检验统计量,这里采用t检验
- 设定显著性水平
- 确定拒绝域
- 计算检验统计量
- 做出统计判断
解释如下:
- 因为抽样分布服从均值为,方差为的正态分布
- 由于抽样分布可能会落在正态分布的两边尾巴处,而设定显著性水平为0.05的意思是:认为0.05(落在正态分布的两边尾巴处)是小概率事件在一次抽样中不可能发生,只要这个一次抽样的结果(即落在正态分布的两边尾巴处)发生了,就认为是原假设错了,而不是认为是抽样误差;故这个显著性水平,就是解决上面
问题
的方法.
这里也只是简单讲了讲假设检验,当然假设检验还有很多内容,比如第一类错误,第二类错误,p-value这些比较常识的内容就不讲了,主要还是在说中心极限定理的作用,另外的假设检验