作爲數據分析師一定要知道的推斷分析(參數估計)

申明:文章內容是作者自己的學習筆記,教學來源是開課吧講師梁勇老師。
不要槓,開心學習!

推斷統計是研究如何利用樣本數據來推斷總體特徵的統計方法。參比如,要了解一個地區的人口特徵,不可能對每個人的特徵一一進行測量,對產品的質量進行檢驗,往往是破壞性的,也不可能對每個產品進行測量。這就需要抽取部分個體即樣本進行測量,然後根據獲得的樣本數據對所研究的總體特徵進行推斷,這就是推斷統計要解決的問題。

推斷統計分析包括兩方面的內容:
參數估計和假設檢驗。
本篇博客講解的是推斷分析中參數的估計,包括其含義與應用。


目標

熟知點估計與區間估計的概念與區別。
熟知中心極限定理的含義。
熟知正態分佈及其特徵。

1、推斷統計分析

(1)總體、個體與樣本

總體:是包含我們要研究的所有數據,總體中的某個數據,就是個體。總體是所有個體構成的集合。從總體中抽取部分個體,就構成了樣本,樣本是總體的一個子集。樣本中包含的個體數量,稱爲樣本容量

(2)推斷統計

在這裏插入圖片描述
推斷統計研究如何根據樣本數據去推斷總體數量特徵的方法。它是對樣本數據進行描述的基礎上,對統計總體的未知數量特徵做出以概率形式表述的推斷。

我們爲什麼要進行推斷呢?
因爲在實際的研究中,獲取總體數據通常比較困難,甚至也許是不可能完成的任務。因此,我們就需要對總體進行抽樣,通過樣本的統計量去估計總體參數。也就是說,總體的參數往往是未知的,我們爲了獲取總體的參數,就需要通過樣本統計量,來估計總體參數。

2、點估計與區間

(1)點估計

就是使用樣本的統計量去代替總體參數。
容易受到抽樣的影響,造成誤差。
例如:
我們要求鳶尾花的平均花瓣長度,就可以使用樣本的均值來估計總體的均值。

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.datasets import load_iris
import warnings

# 設置seaborn繪圖的樣式。
# darkgrid 設置成暗色的網格的形式
sns.set(style="darkgrid")
# 設置字體
plt.rcParams["font.family"] = "SimHei"
# 對符號的支持
plt.rcParams["axes.unicode_minus"] = False
# 忽略警告信息。
warnings.filterwarnings("ignore")
# 加載鳶尾花數據集。
iris = load_iris()
# 將鳶尾花數據與對應的類型合併,組合成完整的記錄。
data = np.concatenate([iris.data, iris.target.reshape(-1, 1)], axis=1)
data = pd.DataFrame(data, 
        columns=["sepal_length", "sepal_width", "petal_length", "petal_width", "type"])
print(data["petal_length"].mean())

data["petal_length"].mean()獲取花瓣長度的均值。
結果:3.7580000000000027

點估計實現簡單,但是容易受到隨機抽樣的影響,可能無法保證結論的準確性。但是,點估計並非完全一無是處,因爲樣本來自總體,樣本還是能夠體現出總體的一些特徵。

(2)區間估計

區間估計根據樣本的統計量,計算出一個可能的區間和概率(信息指數值),表示總體的參數會有多少概率位於該區間中。
區間估計指定的區間,我們稱爲置信區間
區間估計指定的概率,我們稱爲置信度
通俗的講,置信度就是有多大把握認爲總體的參數是在置信區間內。
例如:認爲小張的年齡有90%的可能是在30-40之間,那麼30-40就是置信區間,90%就是置信度。

例如,鳶尾花花瓣長度有70%得到可能性在3.4cm ~ 3.8cm,3.4cm ~ 3.8cm就是置信區間,而70%就是置信度。

(3)點估計和區間估計的區別

點估計與區間估計區別:

  • 點估計是使用一個值來代替總體參數值。

    • 優點:能夠給出具體的估計值。
    • 缺點:缺乏準確信。
  • 區間估計是使用一個置信區間與置信度,表示總體參數有多少可能(置信度)會在該範圍(置信區間)內。

    • 優點:能夠給出合理的範圍以及信息指數。
    • 缺點:不能給出具體的值。

小練習:
在這裏插入圖片描述
正確答案選CD
解析:A選項從可行性角度就是錯的,因爲想要計算總體是個非常難的任務,總體非常龐大,總體是在改變的,所以通常是無法計算總體的。
B選項區間越發確實越準確,但是在現實中沒有意義,應該估計的更加合理而不是一味追求區間越大,失去了推斷統計的價值。
C選項是對的,無論是點估計還是區間估計都無法保證準確性。
D選項正確,我們沒辦法依據總體進行計算,所以我們一般都會通過樣本來計量。

我們經過抽樣,獲取一個樣本後,該如何才能確定置信區間和置信度呢?
在這裏插入圖片描述
這時候我們就用到了中心極限定理。

3、中心極限定理

(1)定理內容

要確定置信區間和置信度,我們首先要知道總體與樣本之間,在分佈上有着怎樣的聯繫。
在數學上,中心極限定理 給出了很好的解釋說明,內容如下:
如果總體(分佈不重要)均值爲 μ,方差爲 σ2,我們隨機進行抽樣,樣本容量爲n,當n增大時,則樣本均值逐漸趨近服從正態分佈:
在這裏插入圖片描述

μ 總體均值
σ2 總體方差
σ 總體標準差
n 樣本容量
μ 樣本均值構成正態分佈的均值
σ2/n 樣本均值構成正態分佈的方差
σ/√n 樣本均值構成正態分佈的標準差(標準誤差/標準誤)

我們可以得出以下結論:

  1. 進行多次抽樣,則每次抽樣會得到一個均值,這些均值會圍繞在總體均值左右,呈正態分佈
  2. 當樣本容量n足夠大時,樣本均值服從正態分佈。 樣本均值構成的正態分佈,其均值等於總體均值 μ樣本均值構成的正態分佈,其標準差等於總體標準差 σ 除以√n

在這裏插入圖片描述

標準誤差(標準誤):無數個樣本均值構成的正態分佈,這個正態分佈的標準差就是標準誤差也就是標準誤。σ/√n
總體的標準差:σ
樣本的標準差:進行一次抽樣所得到的標準差。

(2)程序模擬說明

#定義總體數據
#loc:均值
#scale:標準差
#size:數組的大小,即數組中含有元素的個數
#總體服從的正態分佈數據:
all_ = np.random.normal(loc=30,scale=80,size=100000)
#創建均值數組,用來存放每個抽樣(每個樣本)的均值。
mean_arr = np.zeros(1000)
#循環1000次,獲取1000個樣本
for i in range(len(mean_arr)):
    #進行隨機抽樣。計算每個樣本的均值,並放入數組中。
    #size:樣本容量。
    #replace:是否爲放回抽樣,默認爲True。
    #從總體中抽樣choice
    mean_arr[i] = np.random.choice(all_,size=64,replace=False).mean()
#樣本均值構成正態分佈,該正態分佈的均值等於總體的均值,該正態分佈的標準差(標準誤)等於總體的標準差/根號n
print("樣本均值構的成正態分佈--均值:",mean_arr.mean())
print("樣本均值構的成正態分佈--標準差(標準誤):",mean_arr.std())
print("偏度:",pd.Series(mean_arr).skew())
sns.distplot(mean_arr)

結果:
在這裏插入圖片描述
從結果可以看到,樣本均值構成正態分佈的均值爲:29.99340859761859 和總體均值 30 非常接近。
樣本均值構的成正態分佈–標準差(標準誤)爲 10.226278999969239,而總體的標準差是80,樣本均值構的成正態分佈的標準差就是80除以根號64(64位樣本容量)等於10,和10.226278999969239非常接近。
偏度 -0.031000713476693035 接近0。
所以這是個典型的正態分佈。
在這裏插入圖片描述

4、正態分佈的特性

(1)正態分佈的特性

正態分佈中,均值、中位數與衆數是相等的。越靠近均值的數據越多,反之越少。
在這裏插入圖片描述
在正態分佈中,數據的分佈比例如下:
在這裏插入圖片描述

#定義一個標準差
scale = 50
#定義數據,均值爲0
x = np.random.normal(0,scale,size=100000)
#定義標準差的倍數,倍數從1到3
for times in range(1,4):
    y = x[(x > -times * scale)&(x < times * scale)]
    print(f"{times}倍標準差:")
    print(f"{len(y) * 100 / len(x)}%")

解析: y = x[(x > -times * scale)&(x < times * scale)] 因爲均值是0,所以這裏省略不寫;
np.random.normal 定義一個正態分佈,參數分別爲:均值、標準差、還有數據個數。

結果:
在這裏插入圖片描述
在這裏插入圖片描述

假如我們現在進行抽樣(現實生活中我們只會進行一次抽樣),我們進行一次抽樣得到一個樣本均值,一次抽樣的均值就是無數個抽樣均值中的一員,形成正態分佈。那麼這個一次抽樣的均值是有95%的可能會落在以均值爲中心2倍的標準差內。這個樣本的均值是有95%的概率不會偏離這個正態分佈的均值超過2倍的標準差的,也就意味着有95%的概率它會落在我們均值爲中心正負2倍的標準差範圍之內。

根據中心極限定理,我們能不能得到這樣的一種結論呢?
樣本均值構成的正態分佈,正態分佈的均值等於總體的均值,我們進行一次抽樣得到的均值他不會偏離正態分佈均值超過2倍的標準差的,言外之意就是樣本均值95%的概率不會偏離總體超過2倍的標準差。

我們的目的就是通過樣本的標準差推斷總體是在哪個區間之內。
我們進行一次抽樣得到一個樣本均值,這個樣本均值是無數個樣本均值其中的一個,現在我們把樣本均值視爲中心加減2倍標準差,就有95%的概率涵蓋總體
所以置信區間是:
在這裏插入圖片描述
置信度:95%

疑問?
我們爲什麼是以2倍的標準差作爲置信區間,而不是1倍或者3倍的呢?
因爲2倍的標準差是正好合適的,如果我們要是以1倍的標準差作爲衡量的話,對於這樣的置信區間,根據正態分佈的特性,置信度是68%,雖然說這個置信區間相對來說比較短(當然置信區間越短/小越好,因爲越短總體的幅度纔不是特別大,置信區間越長意義就不大了),但是置信度68%也不是特別高,往往不會更加有效的進行應用,因爲它不在這個區間的還有32%的概率。所以我們想要提高置信度(提高概率)選擇了2倍的標準差,在這個範圍之下,我們可以涵蓋95%的數據,這個置信度就夠用了,也比較合適。如果說你覺得3倍的標準差置信度豈不是更高?是更高了,但是我們還要考慮置信區間的長度,變得太長就沒有意義了,而且從2倍的標準差變爲3倍的標準差也只是99.7%概率,只是增加了4.7%的置信度,但是置信區間卻拉長了一倍,這樣不划算。

我們通過一個練習來理解一下2倍標準差的公式中的參數:
在這裏插入圖片描述
在這裏插入圖片描述

(2)程序模擬說明

# 使用隨機數生成總體均值,其值未知。
mean = np.random.randint(-10000, 10000)
# 定義總體標準差。
std = 50
# 定義樣本容量。
n = 50
# 隨機生成總體數據。
all_ = np.random.normal(loc=mean, scale=std, size=10000)
# 從總體中抽取若干個體,構成一個樣本。
sample = np.random.choice(all_, size=n, replace=False)
sample_mean = sample.mean()
print("總體的均值:", mean)
print("一次抽樣的樣本均值:", sample_mean)
plt.plot(mean, 0, marker="*", color="orange", ms=15, label="總體均值")
plt.plot(sample_mean, 0, marker="o", color="r", label="樣本均值")
# 計算標準誤差。
se = std / np.sqrt(n)
min_ = sample_mean - 1.96 * se
max_ = sample_mean + 1.96 * se
print("置信區間(95%置信度):", (min_, max_))
plt.hlines(0, xmin=min_, xmax=max_, colors="b", label="置信區間")
plt.axvline(min_, 0.4, 0.6, color="r", ls="--", label="左邊界")
plt.axvline(max_, 0.4, 0.6, color="g", ls="--", label="右邊界")
plt.legend()

代碼解析:
總體的均值是多少我們通過隨機數生成 mean = np.random.randint(-10000, 10000)
生成總體的數據也就是生成一個正態分佈數據:all_ = np.random.normal(loc=mean, scale=std, size=10000),總體數量是10000;
抽樣,輸出一次抽樣的樣本均值sample_mean和總體均值mean;
畫出樣本均值和總體均值(從結果圖中可以看到):
plt.plot(mean, 0, marker="*", color="orange", ms=15, label="總體均值") 總體均值在圖中顯示 橘色的 * ;
plt.plot(sample_mean, 0, marker="o", color="r", label="樣本均值") 樣本均值在圖中顯示爲 紅色的 o ;
計算置信區間:
min_ = sample_mean - 1.96 * se
max_ = sample_mean + 1.96 * se
用樣本的均值加減2倍的標準差得到最大和最小值。

這裏爲什麼寫的是1.96而不是2呢 ?
其實2倍的標準差是涵蓋了 超過 95%的數據,如果是更接近95%的話其實就是正負1.96的標準差。

plt.hlines 畫一條線表示置信區間;
plt.axvline 畫出他們的邊界線,其中0.4和0.6代表按40%和60%顯示,min和max就是置信區間最小值和最大值的座標

結果:
總體的均值: 5863
一次抽樣的樣本均值: 5850.496792383608
置信區間(95%置信度): (5836.637499472352, 5864.356085294865)
在這裏插入圖片描述
可以看到,樣本均值95%的概率落在了2倍標準差的置信區間內。

5、放鬆一下

在這裏插入圖片描述
1、以下說法正確的是( A )
A 總體均值是有可能不在置信區間內的。
B 進行一次隨機抽樣,獲取樣本均值,則該樣本均值會非常靠近總體均值。
C 從總體中多次抽樣,樣本均值分佈爲正態分佈。
D 如果置信度爲95%,則置信區間的長度約爲2倍標準差。

解析:A選項正確,因爲置信區間的置信度是95%,那麼就有5%的可能總體均值是不在置信區間內的。
B選項錯誤,因爲我們有5%的概率是超過2倍標準差的,所以樣本均值可能會離總體均值非常遠。
C選項錯誤,從嚴格意義上說(中心極限定理),只有在樣本容量n 足夠大的時候纔會越來越趨近正態分佈,通常n>=30 的時候纔是正態分佈。
D選項錯誤,如果置信度爲95%,則置信區間的長度約爲4倍標準差。(左2倍右2倍)

2、我們可以不用進行區間估計,因爲樣本容量較大時,樣本均值分佈呈現正態分佈,其均值就等於總體的均值。所以,只要計算樣本均值分佈的均值,,就可以準確得出總體的均值了。這種說法正確嗎?( C )
A 正確
B 不正確
C 正確,但不可行
D 不正確,但是可行

解析:C選項正確,要想獲得正態分佈,我們需要進行無數次的抽樣,得到無數次抽樣後的樣本均值纔等於總體的均值,這樣的話是不可行的。

6、總結

  • 推斷性統計分析的概念與應用。
  • 點估計與區間估計。
  • 中心極限定理。
  • 正態分佈的特性。
  • 置信區間與置信度的計算。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章