來源:可樂的數據分析之路
作者:黃同學
1)總體、個體、樣本和樣本容量的概念個體:總體中的某個數據,就是個體。總體是所有個體構成的集合。樣本:從總體中抽取的部分個體,就構成了一個樣本。樣本是總體的一個子集。
2)本文章使用的相關python庫import numpy as np
import pandas as pd
import matplotlib as mpl
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
from sklearn.datasets import load_iris
from scipy import stats
sns.set(style="darkgrid")
mpl.rcParams["font.family"] = "SimHei"
mpl.rcParams["axes.unicode_minus"] = False
warnings.filterwarnings("ignore")
1)推斷統計的概念「推斷統計」研究的是用樣本數據去推斷總體數量特徵的一種方法。它是在對樣本數據進行描述的基礎上,對統計總體的未知數量特徵做出以概率形式表述的推斷。
2)為什麼要進行推斷統計?在實際研究中,總體數據的獲取往往是比較困難的,總體參數一般也是未知的。因此,我們就需要利用總體的某個樣本,通過樣本統計量去估計總體參數。基於這個需求,我們就需要學習推斷統計。通過上述敘述,我們給推斷統計做一個說明。「推斷統計」就是利用樣本統計量,去推斷總體參數的一種方法。
1)參數估計、點估計和區間統計的概念參數估計:用樣本統計量去估計總體的參數。比如,用樣本均值去估計總體均值,用樣本方差去估計總體方差。點估計:用樣本統計量的某個取值,直接作為總體參數的估計值。區間估計:在點估計的基礎之上,給出總體參數估計值的一個區間範圍,該區間通常由樣本統計量加減估計誤差得到。
2)點估計說明
事實上,世界上鳶尾花千千萬,我們總不能說把所有的鳶尾花的數據信息,都統計出來。因此,這就需要我們用樣本均值去估計總體均值。
iris = load_iris()
dt = np.concatenate([iris.data,iris.target.reshape(-1,1)],axis=1)
df = pd.DataFrame(dt,columns=iris.feature_names + ["types"])
display(df.sample(5))
# 計算鳶尾花花瓣長度的均值
df["petal length (cm)"].mean()
結果分析:點估計有點簡單粗暴,容易受到隨機抽樣的影響,很難保證結果的準確性。但是,點估計也不是一無是處,樣本值是來自總體的一個抽樣,在一定程度上還是可以反映出總體的一部分特徵。同時,樣本容量越接近總體容量,點估計值也會越準確。
3)區間估計說明當你碰到一個陌生人,我讓你判斷出這個人的年齡是多少?這裡有兩種方式完成你的推斷。第一,這個人25歲。第二,這個人20-25歲之間。哪種結果更讓你信服呢?很明顯第二種更讓人信服。對於第一種說法,相當於上述的點估計。第二種,相當於區間估計,就是給定一個區間,這個區間包含真值。統計學中對區間估計的定義:在點估計的基礎之上,給出總體參數估計的一個區間範圍,該區間通常由樣本統計量加減估計誤差得到。問題:獲取一個抽樣樣本後,如何確定置信區間和置信度?要確定置信區間和置信度,就需要知道樣本和總體,在分布上有怎樣的聯繫。中心極限定理給出了這個問題很好的回答。上述疑問將在下面為您一一揭曉。
1)中心極限定理的概念設從均值為μ,方差為σ²的任意一個總體中,抽取樣本量為n的樣本。當n充分大的時候,樣本均值X拔近似服從均值為μ,方差為σ²/n的正態分布。
注意:中心極限定理要求n充分大,但是多大才叫充分大呢?一般在統計學中n>=30稱之為大樣本(統計學中的一種經驗說法)。因此在實際生產中,不用多想,肯定都是大樣本。
2)中心極限定理的推導(手寫推導)
設X1,X1,…,Xn是從總體中抽取出來的樣本容量為n的隨機樣本,假設總體均值為μ,方差為σ²。那麼很顯然這n個樣本是獨立同分布的,「獨立」指的就是每個個體被抽到的概率是相同的,每個球被抽到也不會影響其它球被抽到,「同分布」指的是每一個個體都和總體分布一樣,均值為μ,方差為σ²。
3)由中心極限定理得出的幾個結論
不管進行多少次抽樣,每次抽樣都會得到一個均值。當每次抽取的樣本容量n足夠大時,樣本均值總會圍繞總體均值附近,呈現正態分布。當樣本容量n足夠大時,樣本均值構成正態分布,樣本均值近似等於總體均值μ,而樣本方差等於總體方差σ²除以n,即σ²/n。樣本均值分布的標準差,我們稱之為標準誤差,簡稱「標準誤」。
4)python實現中心極限定理
# 設置一個隨機種子,保證每次產生的隨機數都是一定的
np.random.seed(3)
# 產生均值為50,標準差為80,大小為100000的一個總體
all_ = np.random.normal(loc=50,scale=80,size=100000)
# 創建一個樣本均值數組
mean_array = np.zeros(10000)
for i in range(len(mean_array)):
mean_array[i] = np.random.choice(all_,size=64,replace=True).mean()
display("樣本的均值:",mean_array.mean())
display("樣本的標準差:",mean_array.std())
display("偏度:",pd.Series(mean_array).skew())
sns.distplot(mean_array)
從圖中可以看出:樣本均值近似等於總體均值50,而樣本方差等於總體方差80除以8,即10。我們要知道什麼是α值,什麼是置信度,什麼是置信區間,以及怎麼求置信區間。首先要了解以下幾方面的知識,才能有一個比較透徹的了解。
1)什麼是小概率事件?
2)隨機變量的分布的概念。
3)標準正態分布的概率密度函數和和分布函數
4)隨機變量的α分位數的概念。
5)標準正態的分位數表怎麼得到的呢?
6)區間估計的概念。
7)置信水平1-α的解釋
8)樞軸法求置信區間的步驟。
1)什麼是小概率事件?「小概率事件」指的就是在一次隨機試驗中,幾乎不可能發生。
假定參數是射擊靶上10環的位置,隨機進行一次射擊,打在靶心10環的位置上的可能性很小,但是打中靶子的可能性確很大。然後用打在靶上的這個點畫出一個區間,這個區間包含靶心的可能性就很大,這就是區間估計的基本思想。
2)隨機變量的分布的概念3)標準正態分布的概率密度函數和和分布函數
4)隨機變量的α分位數的概念5)標準正態的分位數表怎麼得到的呢?① 標準正態分位數表的公式推導注意:紅色方框中的公式,就是標準正態分布分位數表的由來。
② 標準正態分布分位數表6)區間估計的定義7)置信水平1-α的解釋
對總體樣本進行反覆抽樣(每次抽取到的樣本容量都為n),那麼每個樣本均值都會確定一個區間(a,b),每個這樣的區間要麼包含總體參數,要麼不包含總體參數,不能說成「以多大的概率包含總體的參數」。其中包含總體參數的區間有1-α個,而只有α個區間不包含總體參數,如下圖所示(紅色表示該樣本構成的區間估計不包含總體參數,白色表示該樣本構成的區間估計包含總體參數)。用一個詳細的案例說明:如果對總體返回抽樣10000次,每次抽樣的樣本量都是n,每個樣本都會得到一個區間估計,那麼10000次抽樣,就會得到10000個區間。當置信水平1-α=95%時,那麼就表示10000個區間中包含總體參數的有9500個抽樣樣本,只有500個樣本不包含總體參數,這個不包含總體參數的樣本就相當於我們估計錯誤。這個概率只有5%。這個5%在統計學中,就叫做小概率事件,也就是說在一次隨機試驗中,這個小概率事件不可能發生。即:當我們隨機抽取一個樣本容量為n的抽樣樣本,並且利用這個樣本構造總體參數的置信區間,當指定了置信水平1-α=95%時,那麼這個樣本,基本就可以認為是包含了總體參數,也就是說,總體參數就在這個置信區間內。
8)樞軸法求置信區間的步驟(手寫推導)① 什麼是樞軸量?樞軸量指的就是包含待估計參數,而不包含其它未知參數,並且分布已知的一個量。樞軸量設計到三個重要點:1、包含估計參數。2、不包含其它未知參數。3、該樞軸量的分布已知。
②以總體μ的置信區間為例(方差σ²已知),講述樞軸量求置信區間的步驟。
1)假設檢驗的概念假設檢驗,也稱為顯著性檢驗,指通過樣本的統計量,來判斷與總體參數之間是否存在差異(差異是否顯著)。我們事先對總體參數進行一定的假設,然後通過收集到的數據,來驗證我們之前作出的假設(總體參數)是否合理。在假設檢驗中,我們會建立兩個完全對立的假設,分別為原假設H0與備擇假設H1。然後根據樣本信息進行分析判斷,是選擇接受原假設,還是拒絕原假設(接受備擇假設)。假設檢驗基於「反證法」。首先,我們會假設原假設為真,如果在此基礎上,得出了違反邏輯與常理的結論,則表明原假設是錯誤的,我們就接受備擇假設。否則,我們就沒有充分的理由推翻原假設,此時我們選擇去接受原假設。
2)假設檢驗的理論依據(小概率事件)在假設檢驗中,違反邏輯與常規的結論,就是小概奉事件。我們認為,#小概率事件在一次試驗中是不會發生的*。我們首先認為原假設為真,如果在此基礎上,小概率事件發生,則我們就拒絕原假設,否則,我們就選擇去接受原假設。假設檢驗遵循「疑罪從無」的原則,接受原假設,並不代表原假設一定是正確的,只是我們沒有充分的證據,去證明原假設是錯誤的,因此只能維持原假設。那麼,假設檢驗中的小概率事件是怎麼得出的呢?想想之前講到的置信區間,是不是一切都驗然開朗了?「疑罪從無」很形象的說明的假設檢驗向我們傳達的含義。也就是說,當我們沒有充分的理由拒絕原假設,就必須接受原假設,即使原假設是錯誤的,但是你找不到證據證明原假設是錯誤的,你就只能認為原假設是對的。反之,經過一次隨機試驗,你如果找到了某個理由拒絕了原假設,那麼原假設肯定就是錯誤的,這個是一定的。
3)P-Value值與顯著性水平假設檢驗,用來檢驗樣本的統計量與總體參數,是否存在顯著性差異。那麼如何才算顯著呢?我們就可以計算一個概率值(P-Value),該概率值可以認為就是支持原假設的概率,因為在假設檢驗中,通常原假設為等值假設,因此,P-Value也就表示樣本統計量與總體參數無差異的概率。然後,我們再設定一個閾值,這個閾值叫做「顯著性水平 」 (使用α表示),通常α的取值為0.05(1-α叫做置信度)。當P-Value的值大於α時,接受原假設。當P-Value的值小於α時,拒絕原假設。簡單記為:p值越小越拒絕原假設。軟體中一般都會展示這個p值,那裡的p值,指的就是我們這裡所敘述的p值。假設檢驗和參數估計是推斷統計的兩個組成部分,都是利用樣本對總體進行某種推斷,但是兩者進行推斷的角度不同。參數估計討論的是用樣本統計量估計總體參數的一種方法,總體參數在估計前是未知的。而假設檢驗,則是對總體參數先提出一個假設,然後用樣本信息去檢驗這個假設是否成立。
4)假設檢驗的步驟① 根據實際問題的要求,提出原假設和備擇假設。
② 給出顯著性水平α以及樣本容量n。
③ 確定檢驗統計量和拒絕域。
④ 計算出檢驗統計量的值,並作出決策。5)單邊檢驗和雙邊檢驗
6)常用的假設檢驗① 單個正態總體均值的假設檢驗法(Z檢驗:方差已知)Z檢驗用來判斷樣本均值是否與總體均值具有顯著性差異。Z檢驗是通過正態分布的理論來推斷差異發生的概率,從而比較兩個均值的差異是否顯著。Z檢驗適用於:
③ 有個人說:鳶尾花的平均花瓣長度為3.5cm,這種說法可靠嗎?假設經過長期大量驗證,鳶尾花花瓣長度總體的標準差為1.8cm,我們就可以使用Z檢驗來驗證了。
from scipy import stats
iris = load_iris()
dt = np.concatenate([iris.data,iris.target.reshape(-1,1)],axis=1)
df = pd.DataFrame(dt,columns=iris.feature_names + ["types"])
display(df.sample(5))
mean = df["petal length (cm)"].mean()
n = len(df)
sigma = 1.8
z = (mean - 3.5) / (sigma / np.sqrt(n))
display(z)
④ 單個正態總體均值的假設檢驗法(t檢驗:方差未知)
t檢驗,與Z檢驗類似,用來判斷樣本均值是否與總體均值具有顯替性差異。不過,t檢驗是基於t分布的。檢驗適用於:
# 方法一
iris = load_iris()
dt = np.concatenate([iris.data,iris.target.reshape(-1,1)],axis=1)
df = pd.DataFrame(dt,columns=iris.feature_names + ["types"])
display(df.sample(5))
mean = df["petal length (cm)"].mean()
std = df["petal length (cm)"].std()
n = len(df)
display(mean,std)
t = (mean - 3.5) / (std / np.sqrt(n))
display(t)
# 方法二
from scipy import stats
stats.ttest_1samp(df["petal length (cm)"],3.5)
由南開大學數量經濟研究所所長王群勇教授及其學術團隊主辦,旨在定期與大家分享計量經濟學的相關理論及軟體使用技巧,覆蓋經濟學、管理學、社會學等學科,同時還有乾貨經驗分享、熱點現象深度分析、高校專業剖析……為廣大學友提供優質學術內容,歡迎關注!
▲長按二維碼關注