抽樣分布實踐(python版)

2021-10-01 15:18:58 字數 4212 閱讀 5623

1、驗證資料是否服從正太分布

2、驗證資料是否服從t分布

3、驗證資料是否服從卡方分布

1、什麼是假設檢驗

假設檢驗(hypothesis testing),又稱統計假設檢驗,是用來判斷樣本與樣本、樣本與總體的差異是由抽樣誤差引起還是本質差別造成的統計推斷方法。顯著性檢驗是假設檢驗中最常用的一種方法,也是一種最基本的統計推斷形式,其基本原理是先對總體的特徵做出某種假設,然後通過抽樣研究的統計推理,對此假設應該被拒絕還是接受做出推斷。常用的假設檢驗方法有z檢驗、t檢驗、卡方檢驗、f檢驗等 [1]

2、什麼是p值

p值(p value)就是當原假設為真時所得到的樣本觀察結果或更極端結果出現的概率。如果p值很小,說明原假設情況的發生的概率很小,而如果出現了,根據小概率原理,我們就有理由拒絕原假設,p值越小,我們拒絕原假設的理由越充分。總之,p值越小,表明結果越顯著。但是檢驗的結果究竟是「顯著的」、「中度顯著的」還是「高度顯著的」需要我們自己根據p值的大小和實際問題來解決

通俗版的假設檢驗和什麼是p值可參考知乎馬同學的回答

stats.kstest

stats.shapiro

stats.normaltest

stats.t.rvs

stats.chi2.rvs

# 匯入需要的庫,讀入資料

import pandas as pd

import numpy as np

file = pd.read_excel(r'e:\chrome\data.xlsx')

file.head()

file.describe()

"""樣例資料展示

字段說明:

age:年齡,指登船者的年齡。

fare:**,指船票**。

embark:登船的港口。

"""

##data overview

print ("rows : " ,file.shape[0])

print ("columns : " ,file.shape[1])

print ("\nfeatures : \n" ,file.columns.tolist())

print ("\****sing values : ", file.isnull().sum().values.sum())

print ("\nunique values : \n",file.nunique())

embark = file.groupby(["embarked"])

embark_basic = file.groupby(['embarked']).agg(['count','min','max','median','mean','var','std'])

age_basic = embark_basic["age"]

fare_basic = embark_basic["fare"]

# 1、視覺化年齡分布

import seaborn as sns

import matplotlib.pyplot as plt

sns.set_palette("hls") #設定所有圖的顏色,使用hls色彩空間

sns.distplot(file['age'],color="b",bins=10,kde=true)

plt.title('age')

plt.xlim(-10,80)

plt.grid(true)

plt.show()

# 2、驗證是否服從正態分佈?

#分別用kstest、shapiro、normaltest來驗證分布係數

from scipy import stats

ks_test = stats.kstest(file['age'], 'norm')

shapiro_test = stats.shapiro(file['age'])

normaltest_test = stats.normaltest(file['age'],axis=0)

print('ks_test:',ks_test)

print('shapiro_test:',shapiro_test)

print('normaltest_test:',normaltest_test)

data =  file # 沒有什麼作用,為了方便複製大佬**

# 由於p <0.05, 拒絕原假設,認為資料不服從正態分佈

# 繪製擬合正態分佈曲線

age = data['age']

plt.figure()

age.plot(kind = 'kde') #原始資料的正態分佈

m_s = stats.norm.fit(age) #正態分佈擬合的平均值loc,標準差 scale

normaldistribution = stats.norm(m_s[0], m_s[1]) # 繪製擬合的正態分佈圖

x = np.linspace(normaldistribution.ppf(0.01), normaldistribution.ppf(0.99), 100)

plt.plot(x, normaldistribution.pdf(x), c='orange')

plt.xlabel('age about titanic')

plt.title('age on normaldistribution', size=20)

plt.legend(['age', 'normdistribution'])

# 2、驗證是否服從t分布

np.random.seed(1)

ks = stats.t.fit(age)

df = ks[0]

loc = ks[1]

scale = ks[2]

ks2 = stats.t.rvs(df=df, loc=loc, scale=scale, size=len(age))

stats.ks_2samp(age, ks2)

# 繪製擬合的t分布圖

plt.figure()

age.plot(kind = 'kde')

tdistribution = stats.t(ks[0], ks[1],ks[2])

x = np.linspace(tdistribution.ppf(0.01), tdistribution.ppf(0.99), 100)

plt.plot(x, tdistribution.pdf(x), c='orange')

plt.xlabel('age about titanic')

plt.title('age on tdistribution', size=20)

plt.legend(['age', 'tdistribution'])

#驗證是否符合卡方分布

np.random.seed(1)

chi_s = stats.chi2.fit(age)

df_chi = chi_s[0]

loc_chi = chi_s[1]

scale_chi = chi_s[2]

chi2 = stats.chi2.rvs(df=df_chi, loc=loc_chi, scale=scale_chi, size=len(age))

stats.ks_2samp(age, chi2)

# 對資料進行卡方擬合

plt.figure()

age.plot(kind = 'kde')

chidistribution = stats.chi2(chi_s[0], chi_s[1],chi_s[2]) # 繪製擬合的正態分佈圖

x = np.linspace(chidistribution.ppf(0.01), chidistribution.ppf(0.99), 100)

plt.plot(x, chidistribution.pdf(x), c='orange')

plt.xlabel('age about titanic')

plt.title('age on chi-square_distribution', size=20)

plt.legend(['age', 'chi-square_distribution'])

python 抽樣分布實踐

本次選取鐵達尼號的資料,利用python進行抽樣分布描述,主要是提供實現 具體的理論知識不會過多涉及。注 是否服從t分布不是進行t檢驗 字段說明 age 年齡,指登船者的年齡。fare 指船票 embark 登船的港口。需要驗證的是 1 驗證資料是否服從正態分佈?2 驗證資料是否服從t分布?3 驗證...

python 抽樣分布實踐

本次選取鐵達尼號的資料,利用python進行抽樣分布描述,主要是提供實現 具體的理論知識不會過多涉及。注 是否服從t分布不是進行t檢驗 字段說明 age 年齡,指登船者的年齡。fare 指船票 embark 登船的港口。需要驗證的是 1 驗證資料是否服從正態分佈?2 驗證資料是否服從t分布?3 驗證...

python 抽樣 python實現抽樣分布描述

本次使用木東居士提供資料案例,驗證資料分布等內容,資料讀取 df pd.read excel c users zxy desktop usecols 1,2,3 1.按照港口分類,計算各類港口資料 年齡 車票 的統計量。df1 df.groupby embarked df1.describe 或 變...