目录
1 下面是具体的代码
- 如果修改 np.random.seed() 里的参数,可以看到最后的np.mean() 会变化
- 其中np.random.seed(100) 得出的最终np.mean()居然是4.3 不可思议
import numpy as np
import pandas as pd
import scipy as sp
from matplotlib import pyplot as plt
import seaborn as sns
%precision 3
np.random.seed(100)
count1=999
#生成一个总体的正态分布,先不生成数量
population1=sp.stats.norm(loc=0,scale=1)
sample_mean_array=np.zeros(count1)
for i in range(0,count1,1):
#每次循环时,取1次数量,作为样本
array1=population1.rvs(size=10+i*10)
sample_mean_array[i]=np.mean(array1)
"""
plt.plot(sample_mean_array)
plt.title("随着抽样规模的变大,多次抽样的样本均值的变化",fontsize=16)
plt.xlabel("sample_size",fontsize=16)
plt.ylabel("sample_mean",fontsize=16)
"""
plt.hist(sample_mean_array)
plt.title("随着抽样规模的变大,多次抽样的样本均值的变化",fontsize=16)
plt.xlabel("sample_size",fontsize=16)
plt.ylabel("频数",fontsize=16)
#print(sample_mean_array)
print(f"取样{count1}次的均值={np.mean(sample_mean_array)}")
1.1 代码里发现的一个随机问题
- 理论上,总体均值loc=0, 取样999次,不应该有这么离谱的平均值的平均值,应该是很接近0才对
- ramdon.seed(100) 计算出来的,均值的均值=4.34
- 碰巧代码里整行用的是ramdon.seed(100),否则还发现不了这么奇怪的事情。。。
- ramdon.seed(1) 或者ramdon.seed() 计算出来的,均值的均值=0.00099
1.2 原因
- 暂时不明
- 虽然是伪随机,999次试验不应该 mean(平均数) 还偏离这么大把?
- 记录下,小心