也許所有機(jī)器學(xué)習(xí)的初學(xué)者,或者中級水平的學(xué)生,或者統(tǒng)計(jì)專業(yè)的學(xué)生,都聽說過這個術(shù)語,假設(shè)檢驗(yàn)。 我將簡要介紹一下這個當(dāng)我學(xué)習(xí)時給我?guī)砹寺闊┑闹黝}。我把所有這些概念放在一起,并使用python進(jìn)行示例。 在我尋求更廣泛的事情之前要考慮一些問題 ——什么是假設(shè)檢驗(yàn)?我們?yōu)槭裁从盟渴裁词羌僭O(shè)的基本條件?什么是假設(shè)檢驗(yàn)的重要參數(shù)? 讓我們一個個地開始吧! 什么是假設(shè)檢驗(yàn)? 假設(shè)檢驗(yàn)是一種統(tǒng)計(jì)方法,用于使用實(shí)驗(yàn)數(shù)據(jù)進(jìn)行統(tǒng)計(jì)決策。假設(shè)檢驗(yàn)基本上是我們對人口參數(shù)做出的假設(shè)。 例如:你說班里的學(xué)生平均年齡是40歲,或者一個男生要比女生高。 我們假設(shè)所有這些例子都需要一些統(tǒng)計(jì)方法來證明這些。無論我們假設(shè)什么是真的,我們都需要一些數(shù)學(xué)結(jié)論。 我們?yōu)槭裁匆盟?/p> 假設(shè)檢驗(yàn)是統(tǒng)計(jì)學(xué)中必不可少的過程。假設(shè)檢驗(yàn)評估關(guān)于總體的兩個相互排斥的陳述,以確定樣本數(shù)據(jù)最佳支持哪個陳述。當(dāng)我們說一個發(fā)現(xiàn)具有統(tǒng)計(jì)學(xué)意義時,這要?dú)w功于一個假設(shè)檢驗(yàn)。 什么是假設(shè)的基本條件? 不同均值和方差下的正態(tài)分布 假設(shè)的基礎(chǔ)是規(guī)范化和標(biāo)準(zhǔn)規(guī)范化。我們所有的假設(shè)都圍繞這兩個術(shù)語的基礎(chǔ)。 你一定想知道這兩個圖像之間有什么區(qū)別,有人可能會說我找不到,而其他人看到的圖像會比較平坦,而不是陡峭的。好吧伙計(jì)這不是我想要表達(dá)的,首先你可以看到有不同的正態(tài)曲線所有那些正態(tài)曲線可以有不同的均值和方差,如第二張圖像,如果你注意到圖形是合理分布的,總是均值= 0和方差= 1。當(dāng)我們使用標(biāo)準(zhǔn)化的正態(tài)數(shù)據(jù)時,z—score的概念就出現(xiàn)了。 正態(tài)分布 如果變量的分布具有正態(tài)曲線的形狀——一個特殊的鐘形曲線,則該變量被稱為正態(tài)分布或具有正態(tài)分布。正態(tài)分布圖稱為正態(tài)曲線,它具有以下所有屬性:1.均值,中位數(shù)和眾數(shù)是相等。 標(biāo)準(zhǔn)正態(tài)分布是平均值為0,標(biāo)準(zhǔn)差為1的正態(tài)分布。 哪些是假設(shè)檢驗(yàn)的重要參數(shù)? 零假設(shè) 在推論統(tǒng)計(jì)中,零假設(shè)是一種普遍的說法或默認(rèn)的觀點(diǎn),即兩個測量現(xiàn)象之間沒有關(guān)系,或者分組間沒有關(guān)聯(lián),換句話說,它是一個基本假設(shè),或基于領(lǐng)域或問題知識。 示例:公司的生產(chǎn)力=50個單位/天。 備擇假設(shè) 另一種假設(shè)是假設(shè)檢驗(yàn)中使用的假設(shè)與零假設(shè)相反。通常認(rèn)為觀察是真實(shí)效果的結(jié)果(疊加了一定量的偶然的變化)。 零假設(shè)與備擇假設(shè) 示例:公司生產(chǎn)≠50單位/每天。 重要程度:指我們接受或拒絕無效假設(shè)的重要程度。接受或拒絕假設(shè)不可能100%準(zhǔn)確,因此我們選擇通常為5%的重要程度。 這通常用alpha(數(shù)學(xué)符號)表示,通常為0.05或5%,這意味著您的輸出應(yīng)該有95%的信心在每個樣本中給出類似的結(jié)果。 I型錯誤:當(dāng)我們拒絕零假設(shè)時,盡管該假設(shè)是正確的。類型I錯誤由alpha表示。在假設(shè)檢驗(yàn)中,顯示關(guān)鍵區(qū)域的正常曲線稱為α區(qū)域; II型錯誤:當(dāng)我們接受零假設(shè)但它是錯誤的。II型錯誤用beta表示。在假設(shè)檢驗(yàn)中,顯示接受區(qū)域的正常曲線稱為β區(qū)域。 單尾測試:統(tǒng)計(jì)假設(shè)的測試,其中拒絕區(qū)域僅在采樣分布的一側(cè),稱為單尾測試。 示例:一所大學(xué)有≥4000名學(xué)生或數(shù)據(jù)科學(xué)≤80%采用的組織。 雙尾測試:雙尾測試是一種統(tǒng)計(jì)測試,其中分布的關(guān)鍵區(qū)域是雙側(cè)的,并測試樣本是否大于或小于某個值范圍。如果被測試的樣本屬于任一關(guān)鍵區(qū)域,則接受替代假設(shè)而不是零假設(shè)。 示例:一所大學(xué)!= 4000名學(xué)生或數(shù)據(jù)科學(xué)!= 80%的組織采用。 P值:P值或計(jì)算概率是當(dāng)研究問題的零假設(shè)(H 0)為真時,找到觀察到的或更極端的結(jié)果的概率 —— “極端”程度的定義取決于假設(shè)如何被檢測。 如果您的P值小于選定的顯著性水平,那么就拒絕原假設(shè),即接受樣本提供合理的證據(jù)來支持備選假設(shè)。它并不意味著“有意義”或“重要”的差異;這是在考慮結(jié)果的真實(shí)相關(guān)性時決定的。 示例:你有一枚硬幣而你不知道這是否公平或棘手所以讓我們決定零和備擇假設(shè)。 H0:硬幣是一個公平的硬幣。 H1:硬幣是一個狡猾的硬幣。并且alpha = 5%或0.05 現(xiàn)在讓我們擲硬幣并計(jì)算p值(概率值)。
同樣地,我們連續(xù)6次投擲并得到P值= 1.5%的結(jié)果,但是我們將顯著性水平設(shè)置為95%表示我們允許的5%錯誤率,在這里我們看到我們超出了那個水平,即我們的零假設(shè)不成立,所以我們需要拒絕并提出這個硬幣實(shí)際上是一個狡猾的硬幣。 自由度: 現(xiàn)在想象你對期望值沒有興趣,你對數(shù)據(jù)分析感興趣。您有一個包含10個值的數(shù)據(jù)集。如果你沒有估算任何東西,每個值都可以取任何數(shù)字,對吧?每個值都可以完全自由變化。但是假設(shè)您想使用單樣本t檢驗(yàn)來測試10個值的樣本的總體平均值。你現(xiàn)在有一個約束——平均值的估計(jì)。究竟是什么約束?通過定義均值,必須保持以下關(guān)系:數(shù)據(jù)中所有值的總和必須等于n x mean,其中n是數(shù)據(jù)集中的值的數(shù)量。 因此,如果數(shù)據(jù)集有10個值,則10個值的總和必須等于平均值x 10.如果10個值的平均值為3.5(您可以選擇任何數(shù)字),則此約束要求10個值的總和必須等于10 x 3.5 = 35。 使用該約束,數(shù)據(jù)集中的第一個值可以自由變化。無論它是什么價值,所有10個數(shù)字的總和仍然可以具有35的值。第二個值也可以自由變化,因?yàn)闊o論你選擇什么值,它仍然允許所有值的總和的可能性是35歲。 現(xiàn)在讓我們看一些廣泛使用的假設(shè)檢驗(yàn)類型:
from scipy.stats import ttest_1sampimport numpy as npages = np.genfromtxt(“ages.csv”)print(ages)ages_mean = np.mean(ages)print(ages_mean)tset, pval = ttest_1samp(ages, 30)print(“p-values”,pval)if pval < 0.05: # alpha value is 0.05 or 5% print(' we are rejecting null hypothesis')else: print('we are accepting null hypothesis”) 單樣本t測試結(jié)果
雙樣本t校驗(yàn)結(jié)果 import pandas as pdfrom scipy import statsdf = pd.read_csv('blood_pressure.csv')df[['bp_before','bp_after']].describe()ttest,pval = stats.ttest_rel(df['bp_before'], df['bp_after'])print(pval)if pval<0.05: print('reject null hypothesis')else: print('accept null hypothesis')
H1:兩組的平均值不為0 示例:我們檢查血液之后和血液數(shù)據(jù)之前的血液數(shù)據(jù)。(下面是python代碼) ztest ,pval1 = stests.ztest(df['bp_before'],x2=df['bp_after'],value=0,alternative='two-sided')print(float(pval1))if pval<0.05: print('reject null hypothesis')else: print('accept null hypothesis') F校驗(yàn)或ANOVA實(shí)例圖
import statsmodels.api as smfrom statsmodels.formula.api import olsdf_anova2 = pd.read_csv('https://raw./Opensourcefordatascience/Data-sets/master/crop_yield.csv')model = ols('Yield ~ C(Fert)*C(Water)', df_anova2).fit()print(f'Overall model F({model.df_model: .0f},{model.df_resid: .0f}) = {model.fvalue: .3f}, p = {model.f_pvalue: .4f}')res = sm.stats.anova_lm(model, typ= 2)res
|
|