📜  如何在Python中计算置信区间?

📅  最后修改于: 2022-05-13 01:54:24.264000             🧑  作者: Mango

如何在Python中计算置信区间?

在本文中,我们将研究使用Python编程语言中的各种分布计算置信区间的不同方法。均值的置信区间是可能包含具有特定置信水平的总体均值的一系列值。

公式:

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

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

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

示例 1:

在此示例中,我们将使用 size(n=20) 的数据集,并将使用 t 分布使用 t.interval()函数计算 90% 置信区间,并将 alpha 参数传递给Python中的 0.90。

Python
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))


Python
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))


Python
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))


Python
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))


输出:

(2.962098014195961, 4.837901985804038)

示例 2:

在此示例中,我们将使用 size(n=20) 的数据集,并将使用 t 分布使用 t.interval()函数计算 90% 置信区间,并将 alpha 参数传递给Python中的 0.99。

Python

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中。

示例 3:

在此示例中,我们将使用大小为 (n=100) 的随机数据集,并将使用 norm.interval()函数的范数分布计算 90% 置信区间,并在Python中将 alpha 参数传递给 0.90 .

Python

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:

在这个例子中,我们将使用 size(n=100) 的随机数据集,并将使用 norm.interval()函数的 norm Distribution 计算 99% 置信区间,并将 alpha 参数传递给Python中的 0.99 .

Python

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% 的机会包含真实总体均值。