Chp6-1
2019 年 12 月 20 日
In [2]: import numpy as np import pandas as pd from scipy import stats np.random.seed(1234) my_data1=stats.poisson.rvs(loc=10,mu=60,size=3000) # 生成一个规定均值的泊松分布 pd.Series(my_data1).hist().get_figure().show print('第一个分布的均值是: 70,\t统计平均是: ',my_data1.mean()) my_data2=stats.poisson.rvs(loc=10,mu=15,size=6000) pd.Series(my_data2).hist().get_figure().show print('第二个分布的均值是: 25,统计平均是: ',my_data2.mean()) my_data=np.concatenate((my_data1,my_data2)) # 一个典型的 bi-model 分布,我们以这 9000 个 print('总体的均值为: ',my_data.mean()) sample_data=np.random.choice(a=my_data,size=100) # 从中随机抽取 100 个做样本 print('样本的均值为: ',sample_data.mean()) 第一个分布的均值是: 70, 统计平均是: 69.97966666666666 第二个分布的均值是: 25,统计平均是: 25.009333333333334 总体的均值为: 39.99944444444444 样本的均值为: 39.3
In [32]: point_estimates=[] for x in range(500): #500 次循环 sample=np.random.choice(a=my_data,size=100) # 每次随机抽样 100 个样本 point_estimates.append(sample.mean()) pd.DataFrame(point_estimates).hist(bins=40) # 均值大致呈钟型分布 print('样本均值的均值为: ', np.array(point_estimates).mean()) 样本均值的均值为: 39.95712
In [33]: sample_size=100 sample=np.random.choice(a=my_data,size=sample_size) sigma=sample.std()/(sample_size)**0.5 stats.t.interval(alpha=0.95, # 置信水平 confidence level df=sample_size-1, # 自由度 Degrees of freedom loc=sample.mean(), scale=sigma) # 返回拥有 95% 置信水平的置信区间 Out[33]: (36.29263468910625, 45.26736531089375)