6.1 随机变量及其分布
6.1.1 均匀分布
import numpy as np #加载numpy包
np.set_printoptions(precision=4) #设置numpy输出为4位有效数
a=0
b=1
n=20 # n表示在[a,b]中生成n个点
x=np.linspace(a,b,n); # [a,b]中n个等差数据
# x = np.linspace(0, 1, 20)
x
z = np.ones(n)
z
y=np.ones(n)/(b-a)
y # y=1/(b-a)
import matplotlib.pyplot as plt
plt.plot(x,y)
plt.ylim(0,1.5)
plt.stem(x,y)
6.1.2 正态分布
from numpy import arange,exp #arange类似linspace函数
from math import sqrt,pi
x=arange(-4, 4, 0.1) #x为-4到4上间距为0.1的数
x
y=1/sqrt(2*pi)*exp(-x**2/2)
y
plt.plot(x,y)
6.1.3 百分位点函数
6.2 统计量及抽样分布图
6.2.1 统计量及抽样的概念
6.2.2.1 中心极限定理及其模拟图
# 基于正态分布的中心极限定理模拟函数
import seaborn as sns
def norm_sim1(N=1000,n=10): # n为样本个数,N为模拟次数(即抽样次数)
xbar=np.zeros(N) # 产生放置样本均值的向量
for i in range(N): # 计算[0,1]上的标准正态随机数及均值
xbar[i]=np.random.normal(0,1,n).mean()
sns.distplot(xbar,bins=50) #plt.hist(xbar,bins=50)
print(pd.DataFrame(xbar).describe().T) #模拟结果的基本统计量
np.random.seed(1) #设置种子数seed使结果可重复
norm_sim1(10000,30) #根据默认值模拟
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
def norm_sim1(N=1000, n=10): # n为样本个数,N为模拟次数(即抽样次数)
xbar = np.zeros(N) # 产生放置样本均值的向量
for i in range(N): # 计算[0,1]上的标准正态随机数及均值
xbar[i] = np.random.normal(0, 1, n).mean()
# 使用seaborn的histplot代替已弃用的distplot
sns.histplot(xbar, bins=50, kde=True)
# 添加标题和标签
plt.title('Distribution of Sample Means')
plt.xlabel('Sample Mean')
plt.ylabel('Frequency')
# 显示图形
plt.show()
# 打印模拟结果的基本统计量
print(pd.DataFrame(xbar, columns=['Sample Mean']).describe().T)
# 示例调用
np.random.seed(1) #设置种子数seed使结果可重复
norm_sim1(10000,30) #根据默认值模拟
6.2.2.2 非正态均值统计量的分布 —— 渐近正态分布
# 基于非正态分布的中心极限定理模拟函数
def norm_sim2(N=1000,n=10):
xbar=np.zeros(N)
for i in range(N): #计算[0,1]上的均匀随机数及均值
xbar[i]=np.random.uniform(0,1,n).mean()
sns.distplot(xbar,bins=50)
print(pd.DataFrame(xbar).describe().T)
np.random.seed(3) #设置种子数seed使结果可重复
norm_sim2()
6.2.2.3 均值的 t 分布及其图示
x = np.arange(-4,4,0.1)
yn = st.norm.pdf(x,0,1)
yt3 = st.t.pdf(x, 3)
yt10 = st.t.pdf(x, 10)
plt.plot(x, yn, 'r-', x,yt3,'b.',x,yt10,'g-.')
plt.legend(["N(0, 1)", "t(3)", "t(10)"])