参数估计3

目录

  1.      成对数均值差 置信区间
  2.      单个正态总体的样本均值差\sigma^2  置信区间

 


一 成对数均值差参数估计

     例 为了检验某种降压药的效果,测试n个病人在服药前后的血压收缩值分别为

       \begin{bmatrix} X_1 & Y_1 \\ X_2& Y_2\\ .. & ..\\ X_n& Y_n \end{bmatrix}  X_i: 第i个病人服药前的血压值,Y_i第i个病人服药后的血压值

      由于个人差异,不能把X_i看作同一个正态分布,X_i之间是独立的,Y_i也是。

     但X_iY_i之间是不独立的。

    方法:

     1.1 做差值 D_i=X_i-Y_i

     1.2 把D_1,D_2,....D_n看作同一分布N(u_D,\sigma^2_D)的样本,且相互独立

     1.3  置信区间为

              \begin{bmatrix} \bar{D}-t_{\alpha/2}(n-1)\frac{S_D}{\sqrt{n}}, & \bar{D}+t_{\alpha/2}(n-1)\frac{S_D}{\sqrt{n}} \end{bmatrix}

              其中:

              \bar{D}=\bar{X}-\bar{Y}

             S_D^2=\frac{1}{n-1}\sum(D-\bar{D})^2

 

    例子: 为了评价某种训练方法是否有效,在某个大学随机选取16个学生,经过三个月训练后,训练后成绩差为

D \sim N(u_D,\sigma_D^2),求u_D为95%双侧置信区间

    其中

     X =[189,193,230,210,198,215,234,234,209,220,195,211,228,216,212,231]
     Y = [220,195,234,231,225,228,238,240,221,218,214,236,248,248,230,245]

     解:

# -*- coding: utf-8 -*-
"""
Created on Tue Apr 27 17:45:22 2021

@author: chengxf2
"""

import numpy as np
import scipy.stats as ss
from scipy.stats import norm


'''
    获取分位数值a,t分布和正态分布都是对称函数
Args:
    n: 自由度,t分布才有
    alpha: 累积积分,p(x>a)=alpha
    Ftype: 0:符合正态分布  1: t分布
'''
def GetQuantile(tp=1,alpha=0.025,n=15):
    
    if 1==tp:
        print("\n t 分布",n)
        normt = ss.t(n)
        x = -normt.ppf(alpha)## 累积分布概率计算反函数
    else:
        print("\n 标准正太分布 ")
        x= -norm.ppf(0.025,loc=0,scale=1)
    
    print("\n x %6.3f"%x) 
    return x
    

#np.std(each_acc1, ddof=1)
def D():
    
    X =[189,193,230,210,198,215,234,234,209,220,195,211,228,216,212,231]
    Y = [220,195,234,231,225,228,238,240,221,218,214,236,248,248,230,245]
    
    D =np.array(X)-np.array(Y)
    n = len(D)
    s = np.std(D,ddof=1) #标准差
    
    quantile =GetQuantile(1,0.025,n-1)
    xmean = np.mean(D)
    print("\n D: ",np.mean(D),s,quantile)
    
    low = xmean- (s/np.sqrt(n))*quantile
    up = xmean+ (s/np.sqrt(n))*quantile
    print("\n 下限 %5.3f"%low)
    print("\n 上限 %5.3f"%up)

D()
===============
t 分布 1499

 x  1.962

 分位数 1.9615478106169353

 下限 0.228

 上限 0.272

    


二 单个正态总体的样本均值差\sigma^2  置信区间

    总体样本X \sim N(u,\sigma^2),u,\sigma^2未知,X_1,X_2,...X_n为样本

\bar{X},S^2 为样本均值和样本方差。

   参数估计枢轴量:    \frac{(n-1)S^2}{\sigma^2}\sim \chi^2(n-1)

        \chi^2_{1-\frac{\alpha}{2}}(n-1)<\frac{(n-1)S^2}{\sigma^2}<\chi^2_{\frac{\alpha}{2}}(n-1)

        则:

        双侧置信区间为

     \begin{bmatrix} \frac{(n-1)S^2}{\chi^2_{\alpha/2}(n-1)}& \frac{(n-1)S^2}{\chi^2_{1-\alpha/2}(n-1)} \end{bmatrix}

    单侧置信下限为

    \begin{bmatrix} \frac{(n-1)S^2}{\chi^2_{\alpha}(n-1)}& , \end{bmatrix}

    单侧置信上限位

     \begin{bmatrix} ,& \frac{(n-1)S^2}{\chi^2_{1-\alpha}(n-1)} \end{bmatrix}

  例: 一批数据随机挑选25个样本,样本方差S^2=4.25,求\sigma^2置信度为95%的置信双侧区间,以及单侧置信区间上限。

  解:

        n=25,S^2=4.25,\alpha=0.05

      

# -*- coding: utf-8 -*-
"""
Spyder Editor

This is a temporary script file.
"""

import numpy as np
import scipy.stats as stats
from  scipy.stats import chi2


'''
获取置信区间
args:
    s: 样本方差
    q: 分位数
    n: 自由度
返回
    置信区间值
'''
def GetQ(s,q,n):
    
    a = s*n/q
    return a

'''
计算卡方分布置信区间
Args
  alpha :1-alpha 的双侧置信区间
  n: 样本自由度,样本个数
  
'''
def Calc(alpha=0.05,n=25):
    
    s=4.25 #样本方差
    
    up= 1-alpha/2 #概率函数的累积积分
    low = alpha/2 #概率函数的累积积分
    Quantile1 = chi2.ppf(q=up, df=(n-1))#分位数下限
    Quantile2 = chi2.ppf(q=low, df=(n-1)) #分位数上限
    print("\n 下分位数 %4.2f:"%Quantile1,"\t 上分位数%4.2f: "%Quantile2)
    
    Q1 = GetQ(s,Quantile1,n-1)
    Q2 = GetQ(s,Quantile2,n-1)
    
    print("\n 置信区间[ %4.2f"%Q1,"\t  %4.2f]"%Q2)
  
    
Calc()

  

下分位数 39.36:     上分位数12.40: 

 置信区间[ 2.59       8.23]

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值