手把手教你使用Python實現常用的假設檢驗 !

2021-02-21 Python亂燉
這篇文章,教大家用Python實現常用的假設檢驗!

服從什麼分布,就用什麼區間估計方式,也就就用什麼檢驗!

比如:兩個樣本方差比服從F分布,區間估計就採用F分布計算臨界值(從而得出置信區間),最終採用F檢驗。

建設檢驗的基本步驟:


假設檢驗用到的Python工具包

Statsmodels是Python中,用於實現統計建模和計量經濟學的工具包,主要包括描述統計、統計模型估計和統計推斷Scipy是一個數學、科學和工程計算Python工具包,主要包括統計,優化,整合,線性代數等等與科學計算有關的包

from sklearn.datasets import load_irisimport numpy as npiris = load_iris()iris=pd.DataFrame(iris.data,columns=['sepal_length','sepal_width','petal_legth','petal_width'])print(iris)

np.mean(iris['petal_legth'])'''原假設:鳶尾花花瓣平均長度是4.2備擇假設:鳶尾花花瓣平均長度不是4.2
'''
import statsmodels.stats.weightstatsz, pval = statsmodels.stats.weightstats.ztest(iris['petal_legth'], value=4.2)print(z,pval)

'''P=0.002 <5%, 拒絕原假設,接受備則假設。'''

import scipy.statst, pval = scipy.stats.ttest_1samp(iris['petal_legth'], popmean=4.0)print(t, pval)
'''P=0.0959 > 5%, 接受原假設,即花瓣長度為4.0。 '''


模擬雙樣本t檢驗

iris_1 = iris[iris.petal_legth >= 2]iris_2 = iris[iris.petal_legth < 2]print(np.mean(iris_1['petal_legth']))print(np.mean(iris_2['petal_legth']))
'''H0: 兩種鳶尾花花瓣長度一樣H1: 兩種鳶尾花花瓣長度不一樣
'''
import scipy.statst, pval = scipy.stats.ttest_ind(iris_1['petal_legth'],iris_2['petal_legth'])print(t,pval)
'''p<0.05,拒絕H0,認為兩種鳶尾花花瓣長度不一樣'''


用到的數據連結:pan.baidu.com/s/1t4SKF6

1. 人體體溫的總體均值是否為98.6華氏度?

2. 人體的溫度是否服從正態分布?

3. 人體體溫中存在的異常數據是哪些?

4. 男女體溫是否存在明顯差異?

5. 體溫與心率間的相關性(強?弱?中等?)


1.1 探索數據

import numpy as npimport pandas as pdfrom scipy import statsdata = pd.read_csv("C:\\Users\\baihua\\Desktop\\test.csv")print(data.head())sample_size = data.size #130*3out:   Temperature  Gender  HeartRate0         96.3       1         701         96.7       1         712         96.9       1         743         97.0       1         804         97.1       1         73
print(data.describe())out: Temperature Gender HeartRatecount 130.000000 130.000000 130.000000mean 98.249231 1.500000 73.761538std 0.733183 0.501934 7.062077min 96.300000 1.000000 57.00000025% 97.800000 1.000000 69.00000050% 98.300000 1.500000 74.00000075% 98.700000 2.000000 79.000000max 100.800000 2.000000 89.000000
人體體溫均值是98.249231

1.2 人體的溫度是否服從正態分布?

'''人體的溫度是否服從正態分布?先畫出分布的直方圖,然後使用scipy.stat.kstest函數進行判斷。
'''%matplotlib inlineimport seaborn as snssns.distplot(data['Temperature'], color='b', bins=10, kde=True)

stats.kstest(data['Temperature'], 'norm')out:KstestResult(statistic=1.0, pvalue=0.0)'''p<0.05,不符合正態分布'''

'''判斷是否服從t分布:
'''
np.random.seed(1)ks = stats.t.fit(data['Temperature'])df = ks[0]loc = ks[1]scale = ks[2]t_estm = stats.t.rvs(df=df, loc=loc, scale=scale, size=sample_size)stats.ks_2samp(data['Temperature'], t_estm)
'''
pvalue=0.4321464176976891 <0.05,認為體溫服從t分布'''

'''判斷是否服從卡方分布:
'''np.random.seed(1)chi_square = stats.chi2.fit(data['Temperature'])df = chi_square[0]loc = chi_square[1]scale = chi_square[2]chi_estm = stats.chi2.rvs(df=df, loc=loc, scale=scale, size=sample_size)stats.ks_2samp(data['Temperature'], chi_estm)
'''pvalue=0.3956146564478842>0.05,認為體溫服從卡方分布
'''

'''繪製卡方分布圖
'''
from matplotlib import pyplot as pltplt.figure()data['Temperature'].plot(kind = 'kde')chi2_distribution = stats.chi2(chi_square[0], chi_square[1],chi_square[2])x = np.linspace(chi2_distribution.ppf(0.01), chi2_distribution.ppf(0.99), 100)plt.plot(x, chi2_distribution.pdf(x), c='orange')plt.xlabel('Human temperature')plt.title('temperature on chi_square', size=20)plt.legend(['test_data', 'chi_square'])


1.3 人體體溫中存在的異常數據是哪些?

'''已知體溫數據服從卡方分布的情況下,可以直接使用Python計算出P=0.025和P=0.925時(該函數使用單側概率值)的分布值,在分布值兩側的數據屬於小概率,認為是異常值。'''lower1=chi2_distribution.ppf(0.025)lower2=chi2_distribution.ppf(0.925)t=data['Temperature']print(t[t<lower1] )print(t[t>lower2])
out:
0 96.31 96.765 96.466 96.767 96.8Name: Temperature, dtype: float6463 99.464 99.5126 99.4127 99.9128 100.0129 100.8Name: Temperature, dtype: float64

1.4 男女體溫差異是否顯著

'''此題是一道兩個總體均值之差的假設檢驗問題,因為是否存在差別並不涉及方向,所以是雙側檢驗。建立原假設和備擇假設如下:H0:u1-u2 =0  沒有顯著差H1:u1-u2 != 0  有顯著差別
'''data.groupby(['Gender']).size() male_df = data.loc[data['Gender'] == 1]female_df = data.loc[data['Gender'] == 2]
'''使用Python自帶的函數,P用的雙側累計概率'''

import scipy.statst, pval = scipy.stats.ttest_ind(male_df['Temperature'],female_df['Temperature'])print(t,pval)if pval > 0.05: print('不能拒絕原假設,男女體溫無明顯差異。')else: print('拒絕原假設,男女體溫存在明顯差異。')
out:-2.2854345381654984 0.02393188312240236拒絕原假設,男女體溫存在明顯差異。

1.5 體溫與心率間的相關性(強?弱?中等?)

'''
體溫與心率間的相關性(強?弱?中等?)
'''
heartrate_s = data['HeartRate']temperature_s = data['Temperature']from matplotlib import pyplot as pltplt.scatter(heartrate_s, temperature_s)

stat, p = stats.pearsonr(heartrate_s, temperature_s)print('stat=%.3f, p=%.3f' % (stat, p))print(stats.pearsonr(heartrate_s, temperature_s))
'''相關係數為0.004,可以認為二者之間沒有相關性
'''

領取Python學習資料~

「掃一掃,領取Python學習資料」

相關焦點

  • Python實現常用的假設檢驗 !
    ↑↑↑↑↑點擊上方藍字,回復資料,10個G的驚喜這篇文章,教大家用Python實現常用的假設檢驗
  • 利用python做t檢驗
    T檢驗:使用前提:
  • python卡方檢驗 - CSDN
    卡方檢驗可以用於判斷兩個類別變量的相關性是否顯著。在分類的應用場景中可以用卡方檢驗選擇特徵,特徵與目標變量的相關性越顯著說明特徵越重要,預測力越強。      一、先簡單介紹一下卡方檢驗的步驟。假設y為目標變量,取值為好和壞,x為特徵變量取值為高、中、低。
  • python時間序列平穩性檢驗專題及常見問題 - CSDN
    在做時間序列分析時,我們經常要對時間序列進行平穩性檢驗,而我們常用的軟體是SPSS或SAS,但實際上python也可以用來做平穩性檢驗,而且效果也非常好,今天筆者就講解一下如何用python來做時間序列的平穩性檢驗。首先我們還是來簡單介紹一下平穩性檢驗的相關概念。圖1.
  • 假設檢驗:使用p值來接受或拒絕你的假設
    統計學意義信心水平重要程度P值將這些概念分解成小部分,這樣你就能理解它們的動機和用途。當你讀完這些,假設檢驗的基礎知識就會很清楚了!!假設檢驗的定義假設是關於參數值(均值、方差、中值等)的陳述、假設或主張。假設是對你周圍世界的某件事的有根據的猜測。它應該可以通過實驗或觀察來測試。
  • python 卡方檢驗專題及常見問題 - CSDN
    卡方檢驗可以用於判斷兩個類別變量的相關性是否顯著。在分類的應用場景中可以用卡方檢驗選擇特徵,特徵與目標變量的相關性越顯著說明特徵越重要,預測力越強。      一、先簡單介紹一下卡方檢驗的步驟。假設y為目標變量,取值為好和壞,x為特徵變量取值為高、中、低。
  • 手把手教你使用win7電腦放大鏡
    手把手教你使用win7電腦放大鏡時間:2018-03-27 08:25   來源:系統天堂   責任編輯:沫朵 川北在線核心提示:原標題:win7放大鏡怎麼用? 手把手教你使用win7電腦放大鏡 win7放大鏡怎麼用?有時候網頁的字太小,我們會遇到看不清楚的情況,這時候我們可以藉助電腦本身的放大鏡功能,來清晰查看內容。
  • 手把手教你學ELISA、PCR、免疫組化
    1.手把手教你學ELISAELISA的基礎是抗原或抗體的固相化及抗原或抗體的酶標記。結合在固相載體 表面的抗原或抗體仍保持其免疫學活性,酶標記的抗原或抗體既保留其免疫學活性,又保留酶的活性。2.手把手教你學PCR實時螢光定量PCR,簡稱RT-QPCR,屬於Q-PCR的一種,目前該技術已得到廣泛應用,如:擴增特異性分析、基因定量分析、基因分型、SNP分析等。
  • 合理利用假設檢驗,讓你看清產品數據
    你真的會數據分析嗎?什麼才是數據分析的正確打開方式?文章中舉出了幾種數據分析的常用例子與檢驗方式,一起來學習下。幾個常用場景的數據分析方法及具體操作運營活動效果數據分析常規:UV、PV、拉新、訂單等均值及提升比精確:前後活動的UV、PV、拉新、訂單數據的假設檢驗,如果是在全站做活動,則使用配對樣本T檢驗;如果是分平臺,如安卓和蘋果用戶效果對比,則使用獨立樣本T檢驗。
  • PSoC 4 手把手教你成為魔方大神
    Kickstarter.com-HEYKUBEHEYKUBE亮點合集圖片來源:Cypress Blog手把手教玩家快速復原可編程HEYKUBE 不僅是一個玩具,如果玩家想要編程,加入其他算法、音樂或遊戲,都可以實現!開放的 API 接口能夠拓展 HEYKUBE 的可能性。在樹莓派下載 HEYKUBE python 庫,即可進行開發——可以編寫音樂,設計燈光效果,編程遊戲,甚至加載自己的求解算法。
  • 手把手教你按照孩子體重換算退燒藥的用量
    手把手教你按照孩子體重換算退燒藥的用量 2020-12-27 08:00 來源:澎湃新聞·澎湃號·湃客
  • 小白學數據:教你用Python實現簡單監督學習算法
    當然了,如果你已經熟練掌握監督學習,也不妨快速瀏覽這篇教程,檢驗一下自己的理解程度~什麼是監督學習?有很多方法可以實現有監督學習,我們將探討幾種最常用的方法。根據給定的數據集,機器學習可以分為兩大類:分類(Classification)和回歸(Regression)。如果給定的數據集的輸出值是類別,那麼待解決是分類問題。
  • 手把手教你如何使用斐波那契回調線
    原標題:手把手教你如何使用斐波那契回調線 在交易市場上,大多數的技術指標都具有滯後性,導致交易者在使用時不太好掌握。但是,斐波那契回調線具有提前性,能很好的幫助交易者掛單操作,提前布局。 斐波那契位38.2%和61.8%這些位置被所有的交易者關注著,它們是潛在的入場位,以追隨趨勢市場。
  • 假設檢驗、Z檢驗與T檢驗
    有什麼證據支持這些說法,我們如何檢驗這些假設呢?作為一個統計愛好者,所有這些問題都挖掘了我對假設檢驗基本原理的舊知識。本文將討論假設檢驗的概念以及Z檢驗與t檢驗的區別。然後,我們將使用COVID-19案例研究總結我們的假設檢驗學習。
  • 常用數據分析方法:方差分析及實現!
    方差分析是一種常用的數據分析方法,其目的是通過數據分析找出對該事物有顯著影響的因素、各因素之間的交互作用及顯著影響因素的最佳水平等。本文介紹了方差分析的基礎概念,詳細講解了單因素方差分析、雙因素方差分析的原理,並且給出了它們的python實踐代碼。
  • 手把手教你NumPy來實現Word2vec
    Google一下就會找到一堆關於如何使用諸如Gensim和TensorFlow的庫來調用Word2Vec方法的結果。另外,對於那些好奇心強的人,可以查看Tomas Mikolov基於C語言的原始實現。原稿也可以在這裡找到。本文的主要重點是詳細介紹Word2Vec。
  • python平穩性檢驗專題及常見問題 - CSDN
    (4)檢驗模型的有效性。如果模型不通過檢驗,轉向步驟(2),重新選擇模型再擬合。(5)模型優化。如果擬合模型通過檢驗,仍然轉向不走(2),充分考慮各種情況,建立多個擬合模型,從所有通過檢驗的擬合模型中選擇最優模型。(6)利用擬合模型,預測序列的將來走勢。
  • 手把手 |哇!用R也可以跑Python了
    如果你主要從事數據分析、統計建模和可視化,R大概是你的不二之選。但如果你還想來搞點深度學習,整個自然語言處理,那你可還真得用Python。如果你處於交叉領域,很可能就需要兩種語言切換。通過安裝包,你現在可以在R上運行Python的安裝包和函數了~今天文摘菌就來教教你咋用這個reticulate包。
  • 這幾個常用的python庫你需要知道
    python可以說是近幾年最火熱、最實用的、最容易上手的工具之一了。功能強大、應用廣泛,可以幫你搜集工作數據,還能幫你下載音樂,電影,於是就掀起了一波學習python的大潮,小編也毫不猶豫的加入了。但是對於向小編一樣的小白來說,剛開始學習還是有些困難的,需要首先了解python的一些基礎知識。所以小編就整理了一些常用的python庫,希望對正在學習python的小夥伴有所幫助。1.MatplotlibMatplotlib是一個用於創建二維圖和圖形的底層庫。
  • 假設檢驗的區別 - CSDN
    作為一個統計愛好者,所有這些問題都挖掘了我對假設檢驗基本原理的舊知識。本文將討論假設檢驗的概念以及Z檢驗與t檢驗的區別。然後,我們將使用COVID-19案例研究總結我們的假設檢驗學習。目錄假設檢驗基礎基本概念-零假設、替代假設、類型1錯誤、類型2錯誤和顯著性水平進行假設檢驗的步驟定向假設非定向假設檢驗什麼是Z檢驗?什麼是t檢驗?