第6章 数据的统计分析及可视化

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)"])

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值