統計學第八週,第九周

概念知識點:參數估計

本週是統計學學習小組-第二期的第八週,我們這周的學習內容是【參數估計】,涉及到的二級知識點有三個,分別是:

1、點估計:矩估計法 

2、區間估計:總體均值的區間估計、總體比例的區間估計、總體方差的區間估計、兩個總體均值之差的區間估計、兩個總體比例之差的區間估計、兩個總體方差比的區間估計 

3、樣本量的確定:估計總體均值時樣本量的確定、估計總體比例時樣本量的確定

參考章節:統計學(賈俊平第七版)第七章。

 

參數估計:是推斷統計的重要內容之一。它是在抽樣及抽樣分佈的基礎上,根據樣本統計量來推斷所關心的總體參數。

估計量與估計值:

如果能夠掌握總體的全部數據,那麼只需要做一些簡單的統計描述就可以得到關心的總體特徵,比如,總體均值,方差,比例等。但現實情況比較複雜,有寫現象的範圍比較廣,不可能對總體中的每個單位都進行測定。或者有些總體的個體數很多,不可能也沒有必要進行一一驗證測定。這就需要從總體中抽取一部分個體進行調查,利用樣本信息來推斷總體特徵。

參數估計(parameter estimation)就是用樣本統計量去估計總體的參數。比如,用樣本均值估計總體均值,用樣本比例p估計總體比例,用樣本方差估計總體方差,等等。

在參數估計中,用來估計總體參數的統計量稱爲估計量,用符號θ表示。樣本均值、樣本比例、樣本方差等都可以是一個估計量。根據一個具體的樣本計算出來的估計量的數值稱爲估計值(estimated value)。比如,要估計一個班學生考試的平均分數,從中抽取一個隨機樣本,全班的平均分數是不知道的,稱爲參數,用θ表示,根據樣本計算的平均分數就是一個估計量。假定計算出來的樣本平均分數爲80分,這個80分就是估計量的具體數值,稱爲估計值。

點估計 

比如,若要估計一批產品的合格率,抽樣結果合格率爲96%,將96%直接作爲這批產品合格率的估計值,這也是一個點估計。

區間估計 

假定參數是射擊靶上10環的位置,做一次射擊,打在靶心10環的位置上的可能性很小,但打在靶子上的可能性很大,用打在靶上的這個點畫出一個區間,這個區間包含靶心的可能性就很大,這就是區間估計的基本思想。

區間估計(interval estimate)是在點估計的基礎上,給出總體參數估計的一個區間範圍,該區間通常由樣本統計量加減估計誤差得到。與點估計不同,進行區間估計時,根據樣本統計量的抽樣分佈可以對樣本統計量與總體參數的接近程度給出一個概率度量。

置信區間:置信區間是指由樣本統計量所構造的總體參數的估計區間。在統計學中,一個概率樣本的置信區間(Confidence interval)是對這個樣本的某個總體參數的區間估計。置信區間展現的是這個參數的真實值有一定概率落在測量結果的周圍的程度,其給出的是被測量參數的測量值的可信程度,即前面所要求的“一個概率”。求置信區間。第一步:求一個樣本的均值。第二步:計算出抽樣誤差。經過實踐,通常認爲調查:100個樣本的抽樣誤差爲±10%;500個樣本的抽樣誤差爲±5%;1200個樣本時的抽樣誤差爲±3%。第三步:用第一步求出的“樣本均值”加、減第二步計算的“抽樣誤差”,得出置信區間的兩個端點 [1]  。較窄的置信區間比較寬的置信區間能提供更多的有關總體參數的信息。(https://baike.baidu.com/item/%E7%BD%AE%E4%BF%A1%E5%8C%BA%E9%97%B4/7442583?fr=aladdin

總體均值的區間估計:在對總體均值進行區間估計時,需要考慮總體是否爲正態分佈,總體方差是否已知,用於構造估計量的樣本是大樣本(通常要求n>=30)還是小樣本(n<30)等幾種情況。

總體比例的區間估計:

總體方差的區間估計:

兩個總體均值之差的區間估計,兩個總體比例之差的區間估計,兩個總體方差比的區間估計 

樣本量的確定

在進行參數估計之前,首先應該確定一個適當的樣本量,也就是應該抽取一個多大的樣本來估計總體參數。在進行估計時,總是希望提高估計的可靠程度。但在一定的樣本量下,要提高估計的可靠程度(置信水平),就應擴大置信區間,而過寬的置信區間在實際估計中往往是沒有意義的。比如,我們說某一天會下雨,置信區間並不寬,但可靠性相對較低;如果說第三季度會下一場雨,儘管很可靠,但準確性又太差,也就是置信區間太寬T,這樣的估計是沒有意義的。想要縮小置信區間,又不降低置信程度,就需要增加樣本量。但樣本量的增加會受到許多限制,比如會増加調査的費用和工作量。通常,樣本量的確定與可以容忍的置信區間的寬度以及對此區間設置的置信水平有一定關係。因此,如何確定一個適當的樣本量,是抽樣估計中需要考慮的問題。

估計總體均值時樣本量的確定:

估計總體比例時樣本的確定:

python練習:

'''
總體比率的區間估計
應用場景:美國對900名高爾夫球員進行了一項全國性的調查,以便掌握女子高爾夫運動員如何看待她們在高爾夫球場所受到的待遇。調查顯示有396名女子高爾夫運動球員對開球時間的合理性感到滿意。
https://blog.csdn.net/jiaoyangdetian/article/details/82788105
'''


import numpy as np


n = 900             # 樣本容量
 
p = 396 / n         # 女子高爾夫運動員中對開球時間的合理性感到滿意的總體比率的點估計值
 
a = 0.95            # 取置信水平爲0.95
 
z = 1.96            # z(0.05)時,對應取的值
 
bv = z * np.sqrt((p * (1 - p)) / n)     # 邊際誤差
 
print('邊際誤差的值: bv=', bv)          # 邊際誤差的值: bv= 0.03243061379485611
 
re_l = p - bv
re_h = p + bv
 
print('區間估計的下邊界爲:', re_l)       # 區間估計的下邊界爲: 0.4075693862051439
print('區間估計的上邊界爲:', re_h)       # 區間估計的上邊界爲: 0.4724306137948561
 
#  95%的置信水平下,全部女子高爾夫球員對開球時間的合理性感到滿意的比率在[0.476, 0.472]區間範圍內
 
import pandas as pd
import numpy as np
import os
from scipy import stats

os.chdir('F://Desktop//統計學第二期//第八週,第九周')

data = pd.read_excel('data.xlsx')

age = data['Age']
age.mean()

# 抽取100個樣本
age_sam = age.sample(100)
x1 = age_sam.mean()
age_sam.describe() #數據探索

'''
2、計算置信區間
ps:
1)、pandas.std() 默認是除以n-1 的,即是無偏的,如果想和numpy.std() 一樣有偏,需要加上參數ddof=0 ,即pandas.std(ddof=0) ;DataFrame的describe()中就包含有std();
2)、 numpy.std() 求標準差的時候默認是除以 n 的,即是有偏的,np.std無偏樣本標準差方式爲加入參數 ddof = 1;
原文鏈接:https://blog.csdn.net/qq_43315928/article/details/103658733
'''
# 正態分佈下的置信區間
def norm_conf (data,confidence=0.95):
    # https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.norm.html
    sample_mean = np.mean(data)
    sample_std = np.std(data,ddof=1)
    sample_size = len(data)
    conf_intveral = stats.norm.interval(confidence, loc=sample_mean, scale=sample_std)
    print(conf_intveral)
    
norm_conf(age_sam)

# T分佈下的置信區間
def ttest_conf (data,confidence=0.95):
    sample_mean = np.mean(data)
    sample_std = np.std(data,ddof=1)
    sample_size = len(data)
    conf_intveral = stats.t.interval(confidence,df = (sample_size-1) , loc=sample_mean, scale=sample_std)
    print(conf_intveral)
    
ttest_conf(age_sam)


#重複抽取數據
scale_means = []
for _ in range(1000):
   scale_sample = age.sample(100, replace=True)
   mean = scale_sample.mean()
   scale_means.append(mean)
norm_conf(scale_means)

import seaborn as sns 
from matplotlib import pyplot as plt

sns.set_palette("hls") #設置所有圖的顏色,使用hls色彩空間
sns.distplot(scale_means,color="r",bins=10,kde=True)
plt.title('Age')
plt.xlim(25,35)
plt.grid(True)
plt.show()

 

發佈了12 篇原創文章 · 獲贊 0 · 訪問量 536
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章