5.参数估计——点估计与区间估计概念,置信区间的公式求法与Python实现求出结果

1.点估计

什么是点估计
设总体X的分布形式已知,但它的一个或多个参数未知,借助于总体X的一个样本来估计总体未知参数的值的问题称为参数的点估计问题

在这里插入图片描述

注意:

点估计的问题就是要构造一个适当的统计量(估计量),用它的观察值作为未知参数的近似值(估计值)
估计量的评选标准

  • 无偏性
    若估计量的数学期望存在,并且该期望等于总体参数,则称为无偏估计
    无偏估计的实际意义就是:"E(估计值) - 真值"的结果为0
    不论总体服从什么分布,样本均值是总体均值的无偏估计;样本方差是总体方差的无偏估计

在这里插入图片描述

  • 有效性
    有两个无偏估计θ1和θ2,如果在样本容量n相同的情况下,θ1比θ2更密集在真值附近,就认为θ1比θ2更理想换言之,无偏估计以方差最小者为好
  • 相合性
    随着样本容量的增大,一个估计量的值稳定于待估参数的真值。满足此条件的估计量为相合估计量

在这里插入图片描述

2.区间估计

在这里插入图片描述

对于未知参数,我们不仅要得到近似值(点估计),还希望估计出一个范围(区间),并希望知道这个范围包含参数真值的可信程度。这种形式的估计称为区间估计,这样的区间称为置信区间
置信区间、置信水平
设(X1,…,Xn)是取自总体X的一个样本,对于未知参数θ,给定α,0<α<1,如果存在统计量θ1(X1,…,Xn),θ2(X1,…,Xn),使得P(θ1(X1,…,Xn)≤θ≤θ2(X1,…,Xn))≥1−α
那么,称[θ12]为θ的双侧1-α置信区间;称1-α为置信水平(也称作置信度或置信系数)。
注意:

对于置信区间和置信水平的理解:

  • 固定样本容量n,若反复抽样多次,每个样本值确定一个区间,每个这样的区间要么包含θ的真值,要么不包含θ的真值
  • 在这么多区间中,包含真值的约占100(1-α)%,不包含真值的占100α%
  • 计算得到的区间属于那些包含真值的区间的可信程度为100(1-α)%,或“该区间包含真值”这一陈述的可信程度为100(1-α)%

3.求置信区间的步骤

较优的点估计应该属于置信区间,这是求置信区间的起始和基本思想

求未知参数的置信区间的步骤:

  1. 寻求一个样本X1,X2,…Xn和一个统计量W(X1,X2,…Xn;θ),使统计量W的分布不依赖于θ和其他未知参数,统计量W的构造,通常可以从θ的点估计着手
  2. 对于给定的置信水平1-α,定出两个常数a和b,使得P(a < W(X1,X2,…Xn;θ) < b) = 1-α
  3. 求解出θ的不等式θ1 < θ < θ2,则(θ12)为θ的一个置信水平为1-α的置信区间

4.正态总体均值的置信区间(方差已知)

在这里插入图片描述

已知:总体X服从正态分布,且总体方差已知

求:均值的置信区间
在这里插入图片描述

5.正态总体均值的置信区间(方差未知)

在这里插入图片描述
已知:总体X服从正态分布,且总体方差未知

求:均值的置信区间
在这里插入图片描述

6.正态总体方差的置信区间(总体均值未知)

在这里插入图片描述
在这里插入图片描述

7.两正态总体均值差的置信区间(两个方差已知)

在这里插入图片描述

8.两正态总体均值差的置信区间(方差不等且未知)

在这里插入图片描述

9.Python实现均值估计(一个正态总体)

在这里插入图片描述

import numpy as np
from scipy.stats import norm, t, chi2 # 正态分布;t分布;卡方分布

# 计算一个正态总体均值的置信区间函数(分为是否已知方差两种情况)
def mean_ci_est(data, alpha, sigma=None): # data是原始数据,alpha是置信区间,sigma是方差
    n = len(data) # 样本容量
    sample_mean = np.mean(data) # 样本均值
    # 方差未知
    if sigma is None:
        s = np.std(data)
        se = s/np.sqrt(n)
        # t.ppf(alpha / 2, n-1) 返回左侧面积alpha/2对应的t值
        t_value = np.abs(t.ppf(alpha / 2, n-1)) 
        # 根据公式返回置信区间
        return sample_mean - se * t_value,sample_mean + se * t_value
    # 方差已知
    else:
        se = sigma / np.sqrt(n) # 标准差
        # norm.ppf(alpha/2)返回左侧面积为alpha/2对应的z值
        z_value = np.abs(norm.ppf(alpha/2))
        # 根据公式返回置信区间
        return sample_mean - se*z_value, sample_mean + se*z_value
salary_18 = [1484, 785, 1598, 1366, 1716, 1020, 1716, 785, 3113, 1601]
salary_35 = [902, 4508, 3809, 3923, 4276, 2065, 1601, 553, 3345, 2182]
# 样本均值是总体均值的无偏点估计,并调用函数计算均值的置信区间
print(np.mean(salary_18),mean_ci_est(salary_18,0.05))
print(np.mean(salary_35),mean_ci_est(salary_35,0.05))

在这里插入图片描述

10.Python实现方差估计(一个正态总体)

在这里插入图片描述

import numpy as np
from scipy.stats import norm, t, chi2 # 正态分布;t分布;卡方分布

# 定义计算方差的置信区间函数
def var_ci_est(data, alpha):
    n = len(data)# 样本容量
    s2 = np.var(data) # 样本方差
    # chi2.ppf(alpha/2,n-1) 返回左侧面积为alpha/2的卡方值
    chi2_low_value = chi2.ppf(alpha/2,n-1)
    # chi2.ppf(1-alpha/2,n-1) 返回左侧面积为1-alpha/2的卡方值
    chi2_upper_value = chi2.ppf(1-alpha/2,n-1)
    return (n-1) * s2 /chi2_upper_value, (n-1)*s2/chi2_low_value
salary_18 = [1484, 785, 1598, 1366, 1716, 1020, 1716, 785, 3113, 1601]
salary_35 = [902, 4508, 3809, 3923, 4276, 2065, 1601, 553, 3345, 2182]
# 样本方差是总体方差的无偏点估计
print(np.std(salary_18),np.var(salary_18),var_ci_est(salary_18,0.05))
print(np.std(salary_35),np.var(salary_35),var_ci_est(salary_35,0.05))

在这里插入图片描述

11.Python实现均值差的估计(两个正态总体)

在这里插入图片描述

import numpy as np
from scipy.stats import norm, t, chi2 # 正态分布;t分布;卡方分布

# 两个正态总体均值差的置信区间
def mean_diss_ci_t_est(data1, data2, alpha, equal=True):
    n1 = len(data1) # 样本1的容量
    n2 = len(data2) # 样本2的容量
    mean_diff = np.mean(data1)-np.mean(data2) # 两个样本的均值差(两个总体均值差的无偏估计)
    sample1_var = np.var(data1) # 样本1的方差
    sample2_var = np.var(data2) # 样本2的方差

    # 方差未知且相等
    if equal:
        sw = np.sqrt(((n1-1)*sample1_var + (n2-1)*sample2_var / (n1+n2-2)))
        t_value = np.abs(t.ppf(alpha/2, n1+n2-2))
        return mean_diff - sw*np.sqrt(1/n1+1/n2)*t_value, mean_diff + sw*np.sqrt(1/n1+1/n2)*t_value
    # 方差未知且不等
    else:
        df_numerator = (sample1_var/n1 + sample2_var/n2) **2 # 自由度分子
        df_denominator = (sample1_var/n1)**2/(n1-1) + (sample2_var/n2)**2 /(n2-1)# 自由度分母
        df = df_numerator / df_denominator # 自由度
        t_value = np.abs(t.ppf(alpha/2,df))
        return mean_diff - np.sqrt(sample1_var/n1 + sample2_var/n2) * t_value, mean_diff + np.sqrt(sample1_var/n1 + sample2_var/n2) * t_value

salary_18 = [1484, 785, 1598, 1366, 1716, 1020, 1716, 785, 3113, 1601]
salary_35 = [902, 4508, 3809, 3923, 4276, 2065, 1601, 553, 3345, 2182]

print(mean_diss_ci_t_est(salary_18, salary_35, 0.05, equal=True))
print(mean_diss_ci_t_est(salary_18, salary_35, 0.05, equal=False))

在这里插入图片描述

12.Python实现方差比的估计(两个正态总体)

在这里插入图片描述

import numpy as np
from scipy.stats import norm, t, chi2, f # 正态分布;t分布;卡方分布 f分布

# 定义一个实现方差比置信区间的函数
def var_ratio_ci_est(data1, data2, alpha):
    n1 = len(data1)
    n2 = len(data2)
    f_low_value = f.ppf(alpha/2, n1-1, n2-1) # 左侧临界值
    f_upper_value = f.ppf(1-alpha/2, n1-1, n2-1) # 右侧临界值
    var_ratio = np.var(data1) / np.var(data2)
    return var_ratio / f_upper_value, var_ratio/f_low_value
salary_18 = [1484, 785, 1598, 1366, 1716, 1020, 1716, 785, 3113, 1601]
salary_35 = [902, 4508, 3809, 3923, 4276, 2065, 1601, 553, 3345, 2182]


print(var_ratio_ci_est(salary_18, salary_35, 0.05))

在这里插入图片描述

  • 2
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

想成为数据分析师的开发工程师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值