python計算置信區間

2022-04-03 01:22:44 字數 3857 閱讀 6765

python 置信區間

置信區間是指由 樣本統計量 所構造的總體引數的估計區間。

這句話也就是說 ( 這裡統計量一般指均值 ) 利用樣本均值來估計總體均值的可靠程度, 這個"可靠程度"用"置信區間"來表示, 置信區間(是乙個係數)取值範圍為: 0《置信區間<1; 這個置信區間就是用來描述真實的均值發生在某範圍的概率

當樣本量越大, 則越可靠.

置信區間計算公式:

ci = mean±stdn(ppf)( (1-α)/2 )

公式引數說明:

ci: 表示置信區間

mean: 表示樣本均值

std: 表示樣本標準差

n(ppf): 表示正態分佈的百分點函式

α : 是顯著性水平

α的取值跟樣本量有關

其中,百分點函式ppf是累積分布函式cdf的反函式

常用的幾個置信區間的計算可以不用上述公式,而使用更簡單的公式

置信水平是指特定個體對待特定命題真實性相信的程度

通常使用 90%,95% 和 99% 作為置信區間的置信水平。這三個置信水平的臨界值分別為 1.64,1.98 和 2.32。

se是樣本標準誤, n是樣本個數

se = mean/pow(n,0.5)

置信區間演算法:

ci = mean-se1.64 置信水平為0.9

ci = mean-se1.98 置信水平為0.95

ci = mean-se*2.32 置信水平為0.99

舉例來說,如果在一次**中某人的支援率為55%,而置信水平(也稱為可信區間)0.95以上的置信區間是(50%,60%),那麼他的真實支援率有百分之九十五的機率落在百分之五十和百分之六十之間,因此他的真實支援率不足一半的可能性小於百分之2.5。 如例子中一樣,置信水平一般用百分比表示,因此置信水平0.95上的置信空間也可以表達為:95%置信區間。置信區間的兩端被稱為置信極限。對乙個給定情形的估計來說,顯著性水平越高,所對應的置信區間就會越大。

但是; 重點來了, 在python裡可以直接呼叫函式求出置信區間

置信水平 = 可信區間 = 可信度 ;他們是同乙個說法(其中可信度是為了方便理解,在案例中我用於替代置信水平的)

置信區間寬度 = 置信區間上極限 - 置信區間下極限

結論是:置信區間寬度越小,**模型越精確;但是置信區間寬度小了,可信度也就越小了

"""  置信區間  """

df = len(data) - 1

alpha= # 是設定的可信區間, 可以理解為可信度; 數值是百分數,取值範圍(0,1)

ci = stats.t.interval(alpha, df, loc=np.mean(data), scale=stats.sem(data)) # ci是置信區間

案例: 對給出的樣本資料分析(所用檔案是csv格式的,無法匯入)

import os

import pandas as pd

import matplotlib

import matplotlib.pyplot as plt

from scipy import stats

import numpy as np

os.chdir(r"d:\python金融")

data = pd.read_csv("house_price_gr.csv",encoding='gbk') # 檔案有中文,encoding= 'gbk'

matplotlib.rcparams['axes.unicode_minus']=false#解決儲存影象時負號'-'顯示為方塊的問題

plt.rcparams['font.sans-serif'] = ['simhei'] # 指定預設字型

# print(data.shape[0]) # 檢視樣本數量

# 繪製直方圖 plt.hist(樣本資料,bins=柱子個數) ; 預設x軸是樣本數值, y軸是樣本數值的個數

# plt.hist(data.rate,bins=40)

# plt.show()

# 檢視均值,標準差,百分位數等

print(data.rate.describe())

alpha = 0.99

alpha_list = # 可信度列表

ci_width_list = # 置信區間寬度列表

ci_upper_limit = # 置信區間上極限

ci_lower_limit = # 置信區間下極限

for i in range(20):

print("alpha={}".format(alpha))

# 均值的99%可信區間的置信區間

""" 置信區間 """

df = len(data.rate) - 1

ci = stats.t.interval(alpha, df, loc=np.mean(data.rate), scale=stats.sem(data.rate))

# ci = stats.t.interval(alpha=0.99,df=len(data.rate)-1,loc=np.mean(data.rate),scale=stats.sem(data.rate))

# 算出置信區間的寬度

ci_element = ci

ci_width = ci_element[1] - ci_element[0] # 定義置信區間寬度

print(ci_width) # 輸出置信區間寬度

alpha = alpha - 0.05

print("置信區間={}".format(ci))

print(" "*100)

print(ci_width_list)

print(alpha_list)

x=alpha_list # 設定可信度為x軸

# y=ci_width_list

plt.plot(x,ci_lower_limit,linestyle="dashdot",label="置信區間下極限")

plt.plot(x,ci_width_list,linestyle="dashdot",label = "置信區間寬度")

plt.plot(x,ci_upper_limit,linestyle="dashdot",label= "置信區間上極限")

plt.xlabel("可信度/百分數") # 可信度指的是可信區間, 為了方面理解,用可信度代替可信區間

plt.ylabel("置信區間/單位為變數的單位")

plt.title("可信度--置信區間寬度 圖")

plt.legend() # 顯示標籤

"""可信度與置信區間圖說明:

例如:可信度=0.90,置信區間寬度=0.05, 置信區間上限=0.07,置信區間下限=0.02

則說明:發生在區間(0.02,0.07)這個範圍內的可能性為0.90

通過影象得出: 置信區間寬度越越小,**模型越精確;但是置信區間寬度小了,可信度也就越小了

通過圖可以得出上述結論:

:置信區間寬度越小,**模型越精確;但是置信區間寬度小了,可信度也就越小了

所有為了得到較高的可信度, 就必須得擴大置信區間寬度; 一般取可信度=0.95來計算

原文:

置信區間 confidence interval

置信區間 find an interval such that reasonbly confident that were is a 95 chance that the true p x sampling distribution of the sample mean mean of the sa...

95 置信區間

置信區間在spss裡可以通過描述 探索獲得 1.樣本容量大於30 根據中心極限定律以及正態分佈 z table 95 置信區間的範圍基本等於 sample mean 2 樣本均值的抽樣分布的標準差 這裡,sample mean是觀測到的,2 是查正態分佈z table表得出,而樣本均值的抽樣分布的標...

求總體標準差的置信區間 如何計算置信區間

一 置信區間與置信水平 在做實驗時,即使實驗條件再準確,也無法避免隨機干擾的影響,所以誤差永遠存在,無可避免。做科學實驗時要測量多次,採取取平均值的方法。在科學實驗的測量結果上,總是會加上乙個測量範圍。統計學核心思想 用樣本資訊來估計總體資訊 之前我們用樣本給出乙個精確值來估計總體,這個點估計值是有...