如何在Python中计算置信区间

如何在Python中计算置信区间

在这篇文章中,我们将研究在Python编程语言中使用各种分布来计算置信区间的不同方法。平均数的置信区间是一个可能包含人口平均数的数值范围,具有一定的置信度。

公式:

Confidence Interval = x(+/-)t*(s/√n)
  • x:样本平均数
  • t:与信心水平相对应的t值
  • s:样本标准差
  • n:样本量

方法1:使用t分布计算置信区间

这种方法用于计算n<=30的小数据集的置信区间,为此,用户需要调用scipy.stats库中的t.interval()函数来获得python中给定数据集的群体平均值的置信区间。

语法: st.t.interval(alpha, length, loc, scale))

参数:

  • alpha:从返回的范围中抽取一个RV的概率。
  • length:数据集的长度
  • loc: 位置参数
  • scale:刻度参数

示例 1:

在这个例子中,我们将使用大小为(n=20)的数据集,并将使用t分布计算90%的置信区间,使用t.interval()函数,在python中传递α参数为0.90。

import numpy as np
import scipy.stats as st
  
# define sample data
gfg_data = [1, 1, 1, 2, 2, 2, 3, 3, 3, 3, 
            3, 4, 4, 5, 5, 5, 6, 7, 8, 10]
  
# create 90% confidence interval
st.t.interval(alpha=0.90, df=len(gfg_data)-1,
              loc=np.mean(gfg_data),
              scale=st.sem(gfg_data))

输出:

(2.962098014195961, 4.837901985804038)

示例 2:

在这个例子中,我们将使用大小为(n=20)的数据集,并将使用t分布计算90%的置信区间,使用t.interval()函数,在python中传递α参数为0.99。

import numpy as np
import scipy.stats as st
  
# define sample data
gfg_data = [1, 1, 1, 2, 2, 2, 3, 3, 3,
            3, 3, 4, 4, 5, 5, 5, 6,
            7, 8, 10]
  
# create 99% confidence interval
st.t.interval(alpha=0.99,
              df=len(gfg_data)-1,
              loc=np.mean(gfg_data), 
              scale=st.sem(gfg_data))

输出:

(2.3481954013214263, 5.4518045986785735)

从实例1和实例2的解释:

在例1中,计算出的90%人口的置信区间是(2.96-4.83),而在例2中,计算出的99%人口的置信区间是(2.34-5.45),可以解释为例2的置信区间比例1的95%人口的置信区间宽,这意味着[2.34,5.45]的置信区间有99%的机会包含真实的人口平均值。

方法2:使用正态分布计算置信区间

这种方法用于计算n>30的大数据集的置信区间,为此,用户需要调用scipy.stats库中的norm.interval()函数来获得给定数据集的群体平均值的置信区间,在python中数据集为正态分布。

语法: st.norm.interval(alpha, loc, scale))

参数:

  • alpha: 从返回的范围中抽取一个RV的概率。
  • loc: 位置参数
  • scale: 规模参数

示例 3:

在这个例子中,我们将使用大小为(n=100)的随机数据集,并使用norm.interval()函数的norm分布计算90%的置信区间,并在python中传递α参数为0.90。

import numpy as np
import scipy.stats as st
  
# define sample data
gfg_data = np.random.randint(5, 10, 100)
  
# create 90% confidence interval
# for population mean weight
st.norm.interval(alpha=0.90,
                 loc=np.mean(gfg_data),
                 scale=st.sem(gfg_data))

输出:

(6.920661262464349, 7.3593387375356505)

示例 4:

在这个例子中,我们将使用大小为(n=100)的随机数据集,并使用norm.interval()函数的norm分布来计算99%的置信区间,并在python中传递α参数为0.99。

import numpy as np
import scipy.stats as st
  
# define sample data
gfg_data = np.random.randint(5, 10, 100)
  
# create 99% confidence interval
# for population mean weight
st.norm.interval(alpha=0.99, 
                 loc=np.mean(gfg_data),
                 scale=st.sem(gfg_data))

输出:

(6.689075889330163, 7.450924110669837)

从例3和例4的解释:

在例3中,计算出的90%人口的置信区间是(6.92-7.35),而在例4中计算出的99%人口的置信区间是(6.68-7.45),可以解释为例4的置信区间比例3的95%人口的置信区间宽,这意味着[6.68,7.45]的置信区间有99%的机会包含真实的人口平均值。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

Numpy教程