python 实现参数估计--置信区间

(1)py实现一个总体均值的置信区间

def mean_interval(mean=None, std=None, sig=None, n=None, confidence=0.95):
    """
    mean:样本均值
    std:样本标准差
    sig: 总体方差
    n:   样本量
    confidence:置信水平
    功能:构建总体均值的置信区间
    """
    alpha = 1 - confidence
    z_score = scipy.stats.norm.isf(alpha / 2)  # z分布临界值
    t_score = scipy.stats.t.isf(alpha / 2, df = (n-1) )  # t分布临界值
   
    if n >= 30 and sig != None:
        me = z_score*sig / np.sqrt(n)  # 误差
        lower_limit = mean - me
        upper_limit = mean + me
        
    if n >= 30 and sig == None:
        me = z_score*std / np.sqrt(n)
        lower_limit = mean - me
        upper_limit = mean + me
        
    if n < 30 and sig == None:
        me = t_score*std / np.sqrt(n)
        lower_limit = mean - me
        upper_limit = mean + me
    
    return (round(lower_limit, 3), round(upper_limit, 3))

mean_interval(mean=8900, std=None, sig=500, n=35, confidence=0.95)
mean_interval(mean=8900, std=500, sig=None, n=35, confidence=0.90)
mean_interval(mean=8900, std=500, sig=None, n=35, confidence=0.99)

 

(2)py实现一个总体方差的置信区间

(1) 样本均值为21,  样本标准差为2,    样本量为50;                    
(2) 样本均值为1.3, 样本标准差为0.02, 样本量为15;                        
(3) 样本均值为167, 样本标准差为31,   样本量为22;                        
Question1: 根据以上样本结果,计算总体方差的90%的置信区间?  
Question2: 根据以上样本结果,计算总体标准差的90%的置信区间?        

def std_interval(mean=None, std=None, n=None, confidence=0.95, para="总体标准差"):
    """
    mean:样本均值
    std:样本标准差
    n:   样本量
    confidence:置信水平
    para:总体估计参数
    功能:构建总体方差&总体标准差的置信区间
    """
    variance = np.power(std,2)
    alpha = 1 - confidence
    
    chi_score0 = scipy.stats.chi2.isf(alpha / 2, df = (n-1))
    chi_score1 = scipy.stats.chi2.isf(1 - alpha / 2, df = (n-1))
   
    if para == "总体标准差":
        lower_limit = np.sqrt((n-1)*variance / chi_score0)
        upper_limit = np.sqrt((n-1)*variance / chi_score1)
    if para == "总体方差":
        lower_limit = (n-1)*variance / chi_score0
        upper_limit = (n-1)*variance / chi_score1
        
    return (round(lower_limit, 2), round(upper_limit, 2))

std_interval(mean=21, std=2, n=50, confidence=0.90)   
std_interval(mean=1.3, std=0.02, n=15, confidence=0.90)  
std_interval(mean=167, std=31, n=22, confidence=0.90)  

(3)py实现两个总体方差比的置信区间

data1 = [3.45, 3.22, 3.90, 3.20, 2.98, 3.70, 3.22, 3.75, 3.28, 3.50, 3.38, 3.35, 2.95, 3.45, 3.20, 3.16, 3.48, 3.12, 3.20, 3.18, 3.25]
data2 = [3.22, 3.28, 3.35, 3.38, 3.19, 3.30, 3.30, 3.20, 3.05, 3.30, 3.29, 3.33, 3.34, 3.35, 3.27, 3.28, 3.16, 3.28, 3.30, 3.34, 3.25]

def two_std_interval(d1, d2, confidence=0.95, para="两个总体方差比"):
    """
    d1: 数据1
    d2: 数据2
    confidence:置信水平
    para:总体估计参数
    功能:构建两个总体方差比&总体标准差比的置信区间
    """
    n1 = len(d1)
    n2 = len(d2)
    var1 = np.var(d1, ddof=1)  # ddof=1  样本方差
    var2 = np.var(d2, ddof=1)  # ddof=1  样本方差
    alpha = 1 - confidence
    
    f_score0 = scipy.stats.f.isf(alpha / 2, dfn=n1-1, dfd=n2-1)    # F分布临界值
    f_score1 = scipy.stats.f.isf(1-alpha / 2, dfn=n1-1, dfd=n2-1)  # F分布临界值
   
    if para == "两个总体标准差比":
        lower_limit = np.sqrt((var1 / var2) / f_score0)
        upper_limit = np.sqrt((var1 / var2) / f_score01)
    if para == "两个总体方差比":
        lower_limit = (var1 / var2) / f_score0
        upper_limit = (var1 / var2) / f_score1
        
    return (round(lower_limit, 2), round(upper_limit, 2))

two_std_interval(data1, data2, confidence=0.95, para="两个总体方差比")

 

  • 10
    点赞
  • 103
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 置信区间(Confidence Interval)是指用于估计总体参数的一种区间估计方法。在 Python 中,可以通过 scipy.stats 模块中的 t.interval() 或 norm.interval() 方法来计算置信区间。 以 t.interval() 方法为例,其语法格式为: ```python t.interval(alpha, df, loc, scale) ``` 其中,参数含义如下: - alpha:置信水平,即置信区间的概率。例如,如果 alpha=0.95,则表示置信水平为 95%。 - df:自由度,即样本减一。 - loc:样本均值。 - scale:标准误差,即标准差除以样本的平方根。 例如,如果有一个样本数据 x,其样本均值为 10,样本标准差为 2,样本为 50,置信水平为 95%,则可以使用 t.interval() 方法计算置信区间: ```python import scipy.stats as stats x_mean = 10 x_std = 2 n = 50 alpha = 0.95 df = n - 1 lower, upper = stats.t.interval(alpha, df, loc=x_mean, scale=x_std/n**0.5) print('95% Confidence Interval: ({:.2f}, {:.2f})'.format(lower, upper)) ``` 输出结果为: ``` 95% Confidence Interval: (9.13, 10.87) ``` 即样本均值的 95% 置信区间为 (9.13, 10.87)。 ### 回答2: Python 置信区间是一种统计学上的概念,用于估计样本统计与整个总体参数之间的可能范围。具体说来,置信区间指的是当我们对一个总体参数进行估计时,在一定置信水平下,我们能够确定一个区间,该区间包含了真实总体参数的可能取值。 在Python中,我们可以使用统计学库中的函数来计算置信区间。其中,最常用的是`scipy.stats`中的`t`分布函数或`norm`分布函数。这些函数可以帮助我们计算样本均值的置信区间。 首先,我们需要收集样本数据,并计算样本的均值和标准差。然后,我们可以选择一个置信水平(通常是95%或99%)来计算置信区间。对于`t`分布函数,我们还需要样本大小和自由度来计算。 示例代码如下: ```python import scipy.stats as stats # 输入样本数据 sample = [1, 2, 3, 4, 5] # 计算样本均值和标准差 mean = sum(sample) / len(sample) std_dev = stats.tstd(sample) # 选择置信水平和计算置信区间 confidence_level = 0.95 t_value = stats.t.ppf((1 + confidence_level) / 2, df=len(sample)-1) margin_of_error = t_value * std_dev / (len(sample) ** 0.5) # 计算置信区间 lower_bound = mean - margin_of_error upper_bound = mean + margin_of_error print("置信区间:({}, {})".format(lower_bound, upper_bound)) ``` 这段代码会计算给定样本的95%置信区间。我们通过选择适当的置信水平和使用合适的函数,可以计算不同置信水平下的置信区间。 总之,Python提供了统计学库来计算置信区间,可以通过选择置信水平和样本数据来计算样本统计置信区间,帮助我们对总体参数进行估计和推断。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值