午夜视频在线网站,日韩视频精品在线,中文字幕精品一区二区三区在线,在线播放精品,1024你懂我懂的旧版人,欧美日韩一级黄色片,一区二区三区在线观看视频

分享

使用Python進(jìn)行機(jī)器學(xué)習(xí)的假設(shè)檢驗(yàn)(附代碼)

 板橋胡同37號(hào) 2019-09-04

也許所有機(jī)器學(xué)習(xí)的初學(xué)者,或者中級(jí)水平的學(xué)生,或者統(tǒng)計(jì)專業(yè)的學(xué)生,都聽說過這個(gè)術(shù)語,假設(shè)檢驗(yàn)。

我將簡(jiǎn)要介紹一下這個(gè)當(dāng)我學(xué)習(xí)時(shí)給我?guī)砹寺闊┑闹黝}。我把所有這些概念放在一起,并使用python進(jìn)行示例。

在我尋求更廣泛的事情之前要考慮一些問題 ——什么是假設(shè)檢驗(yàn)?我們?yōu)槭裁从盟??什么是假設(shè)的基本條件?什么是假設(shè)檢驗(yàn)的重要參數(shù)?

讓我們一個(gè)個(gè)地開始吧!

什么是假設(shè)檢驗(yàn)?

假設(shè)檢驗(yàn)是一種統(tǒng)計(jì)方法,用于使用實(shí)驗(yàn)數(shù)據(jù)進(jìn)行統(tǒng)計(jì)決策。假設(shè)檢驗(yàn)基本上是我們對(duì)人口參數(shù)做出的假設(shè)。

例如:你說班里的學(xué)生平均年齡是40歲,或者一個(gè)男生要比女生高。

我們假設(shè)所有這些例子都需要一些統(tǒng)計(jì)方法來證明這些。無論我們假設(shè)什么是真的,我們都需要一些數(shù)學(xué)結(jié)論。

我們?yōu)槭裁匆盟?/p>

假設(shè)檢驗(yàn)是統(tǒng)計(jì)學(xué)中必不可少的過程。假設(shè)檢驗(yàn)評(píng)估關(guān)于總體的兩個(gè)相互排斥的陳述,以確定樣本數(shù)據(jù)最佳支持哪個(gè)陳述。當(dāng)我們說一個(gè)發(fā)現(xiàn)具有統(tǒng)計(jì)學(xué)意義時(shí),這要?dú)w功于一個(gè)假設(shè)檢驗(yàn)。

什么是假設(shè)的基本條件?

 不同均值和方差下的正態(tài)分布

假設(shè)的基礎(chǔ)是規(guī)范化和標(biāo)準(zhǔn)規(guī)范化。我們所有的假設(shè)都圍繞這兩個(gè)術(shù)語的基礎(chǔ)。

標(biāo)準(zhǔn)化的正態(tài)曲線圖像和數(shù)據(jù)分布及每個(gè)部分的百分比

你一定想知道這兩個(gè)圖像之間有什么區(qū)別,有人可能會(huì)說我找不到,而其他人看到的圖像會(huì)比較平坦,而不是陡峭的。好吧伙計(jì)這不是我想要表達(dá)的,首先你可以看到有不同的正態(tài)曲線所有那些正態(tài)曲線可以有不同的均值和方差,如第二張圖像,如果你注意到圖形是合理分布的,總是均值= 0和方差= 1。當(dāng)我們使用標(biāo)準(zhǔn)化的正態(tài)數(shù)據(jù)時(shí),z—score的概念就出現(xiàn)了。

正態(tài)分布

如果變量的分布具有正態(tài)曲線的形狀——一個(gè)特殊的鐘形曲線,則該變量被稱為正態(tài)分布或具有正態(tài)分布。正態(tài)分布圖稱為正態(tài)曲線,它具有以下所有屬性:1.均值,中位數(shù)和眾數(shù)是相等。

正態(tài)分布方程
標(biāo)準(zhǔn)化正態(tài)分布

標(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),即兩個(gè)測(cè)量現(xiàn)象之間沒有關(guān)系,或者分組間沒有關(guān)聯(lián),換句話說,它是一個(gè)基本假設(shè),或基于領(lǐng)域或問題知識(shí)。

示例:公司的生產(chǎn)力=50個(gè)單位/天。

備擇假設(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é)符號(hào))表示,通常為0.05或5%,這意味著您的輸出應(yīng)該有95%的信心在每個(gè)樣本中給出類似的結(jié)果。

I型錯(cuò)誤:當(dāng)我們拒絕零假設(shè)時(shí),盡管該假設(shè)是正確的。類型I錯(cuò)誤由alpha表示。在假設(shè)檢驗(yàn)中,顯示關(guān)鍵區(qū)域的正常曲線稱為α區(qū)域;

II型錯(cuò)誤:當(dāng)我們接受零假設(shè)但它是錯(cuò)誤的。II型錯(cuò)誤用beta表示。在假設(shè)檢驗(yàn)中,顯示接受區(qū)域的正常曲線稱為β區(qū)域。

單尾測(cè)試:統(tǒng)計(jì)假設(shè)的測(cè)試,其中拒絕區(qū)域僅在采樣分布的一側(cè),稱為單尾測(cè)試。

示例:一所大學(xué)有≥4000名學(xué)生或數(shù)據(jù)科學(xué)≤80%采用的組織。

雙尾測(cè)試:雙尾測(cè)試是一種統(tǒng)計(jì)測(cè)試,其中分布的關(guān)鍵區(qū)域是雙側(cè)的,并測(cè)試樣本是否大于或小于某個(gè)值范圍。如果被測(cè)試的樣本屬于任一關(guān)鍵區(qū)域,則接受替代假設(shè)而不是零假設(shè)。

示例:一所大學(xué)!= 4000名學(xué)生或數(shù)據(jù)科學(xué)!= 80%的組織采用。

單尾和雙尾圖像

P值:P值或計(jì)算概率是當(dāng)研究問題的零假設(shè)(H 0)為真時(shí),找到觀察到的或更極端的結(jié)果的概率 —— “極端”程度的定義取決于假設(shè)如何被檢測(cè)。

如果您的P值小于選定的顯著性水平,那么就拒絕原假設(shè),即接受樣本提供合理的證據(jù)來支持備選假設(shè)。它并不意味著“有意義”或“重要”的差異;這是在考慮結(jié)果的真實(shí)相關(guān)性時(shí)決定的。

示例:你有一枚硬幣而你不知道這是否公平或棘手所以讓我們決定零和備擇假設(shè)。

H0:硬幣是一個(gè)公平的硬幣。

H1:硬幣是一個(gè)狡猾的硬幣。并且alpha = 5%或0.05

現(xiàn)在讓我們擲硬幣并計(jì)算p值(概率值)。

  • 第一次投擲硬幣,結(jié)果是尾部P值= 50%(頭部和尾部的概率相等);

  • 第二次拋硬幣,結(jié)果是尾巴,現(xiàn)在p值= 50/2 = 25%。

同樣地,我們連續(xù)6次投擲并得到P值= 1.5%的結(jié)果,但是我們將顯著性水平設(shè)置為95%表示我們?cè)试S的5%錯(cuò)誤率,在這里我們看到我們超出了那個(gè)水平,即我們的零假設(shè)不成立,所以我們需要拒絕并提出這個(gè)硬幣實(shí)際上是一個(gè)狡猾的硬幣。

自由度:  現(xiàn)在想象你對(duì)期望值沒有興趣,你對(duì)數(shù)據(jù)分析感興趣。您有一個(gè)包含10個(gè)值的數(shù)據(jù)集。如果你沒有估算任何東西,每個(gè)值都可以取任何數(shù)字,對(duì)吧?每個(gè)值都可以完全自由變化。但是假設(shè)您想使用單樣本t檢驗(yàn)來測(cè)試10個(gè)值的樣本的總體平均值。你現(xiàn)在有一個(gè)約束——平均值的估計(jì)。究竟是什么約束?通過定義均值,必須保持以下關(guān)系:數(shù)據(jù)中所有值的總和必須等于n x mean,其中n是數(shù)據(jù)集中的值的數(shù)量。

因此,如果數(shù)據(jù)集有10個(gè)值,則10個(gè)值的總和必須等于平均值x 10.如果10個(gè)值的平均值為3.5(您可以選擇任何數(shù)字),則此約束要求10個(gè)值的總和必須等于10 x 3.5 = 35。

使用該約束,數(shù)據(jù)集中的第一個(gè)值可以自由變化。無論它是什么價(jià)值,所有10個(gè)數(shù)字的總和仍然可以具有35的值。第二個(gè)值也可以自由變化,因?yàn)闊o論你選擇什么值,它仍然允許所有值的總和的可能性是35歲。

現(xiàn)在讓我們看一些廣泛使用的假設(shè)檢驗(yàn)類型: 

  • T校驗(yàn)(學(xué)生T校驗(yàn))

  • Z校驗(yàn)

  • ANOVA校驗(yàn)

  • 卡方檢驗(yàn)

T—檢驗(yàn):t檢驗(yàn)是一種推論統(tǒng)計(jì)量,用于確定在某些特征中可能與兩組的均值之間是否存在顯著差異。它主要用于數(shù)據(jù)集,如通過翻轉(zhuǎn)硬幣100次記錄為結(jié)果的數(shù)據(jù)集,將遵循正態(tài)分布并且可能具有未知的方差。T檢驗(yàn)用作假設(shè)檢驗(yàn)工具,其允許測(cè)試適用于群體的假設(shè)。

T檢驗(yàn)有兩種類型:
  • 單樣本t檢驗(yàn)

  • 雙樣本t檢驗(yàn)

單樣本t檢驗(yàn):?jiǎn)螛颖総檢驗(yàn)確定樣本均值是否與已知或假設(shè)的總體均值具有統(tǒng)計(jì)學(xué)差異。單樣本t檢驗(yàn)是參數(shù)檢驗(yàn)。
示例:你有10個(gè)年齡,你正在檢查平均年齡是否為30歲。 (使用python查看下面的代碼)。
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”)
上面代碼的結(jié)果如下: 

單樣本t測(cè)試結(jié)果

雙樣本t檢驗(yàn):獨(dú)立樣本t檢驗(yàn)或雙樣本t檢驗(yàn)比較兩個(gè)獨(dú)立組的平均值,以確定是否有統(tǒng)計(jì)證據(jù)表明相關(guān)的人口均值存在顯著差異。獨(dú)立樣本t檢驗(yàn)是參數(shù)檢驗(yàn)。該測(cè)試也稱為:獨(dú)立t檢驗(yàn)。
示例:在week1和week2之間是否存在任何關(guān)聯(lián)(代碼在下面的python中給出)。
from scipy.stats import ttest_indimport numpy as npweek1 = np.genfromtxt('week1.csv',  delimiter=',')week2 = np.genfromtxt('week2.csv',  delimiter=',')print(week1)print('week2 data :-\n')print(week2)week1_mean = np.mean(week1)week2_mean = np.mean(week2)print('week1 mean value:',week1_mean)print('week2 mean value:',week2_mean)week1_std = np.std(week1)week2_std = np.std(week2)print('week1 std value:',week1_std)print('week2 std value:',week2_std)ttest,pval = ttest_ind(week1,week2)print('p-value',pval)if pval <0.05:  print('we reject null hypothesis')else:  print('we accept null hypothesis”)

雙樣本t校驗(yàn)結(jié)果

配對(duì)樣本t檢驗(yàn):配對(duì)樣本t檢驗(yàn)也稱為依賴樣本t檢驗(yàn)。這是一個(gè)單變量測(cè)試,測(cè)試2個(gè)相關(guān)變量之間的顯著差異。這方面的一個(gè)例子是,如果您在某些治療,病癥或時(shí)間點(diǎn)之前和之后收集個(gè)人的血壓。
H0:表示兩個(gè)樣本之間的差異為0。
H1:兩個(gè)樣本之間的平均差異不是0。
執(zhí)行下面的代碼可以得到同樣的結(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')
什么時(shí)候可以運(yùn)行Z校驗(yàn)。
在統(tǒng)計(jì)學(xué)中使用幾種不同類型的校驗(yàn)(即f檢驗(yàn),卡方檢驗(yàn),t檢驗(yàn))。
在下列情況下,您將使用Z測(cè)試:
  • 樣本量大于30。否則,請(qǐng)使用t檢驗(yàn)。
    數(shù)據(jù)點(diǎn)應(yīng)彼此獨(dú)立。換句話說,一個(gè)數(shù)據(jù)點(diǎn)不相關(guān)或不影響另一個(gè)數(shù)據(jù)點(diǎn)。
  • 數(shù)據(jù)應(yīng)該是正常分布的。但是,對(duì)于大樣本量(超過30個(gè)),這并不總是重要的。
  • 數(shù)據(jù)應(yīng)從人口中隨機(jī)選擇,每個(gè)項(xiàng)目都有相同的選擇機(jī)會(huì)。
  • 如果可能的話,樣本量應(yīng)該相等。
再舉一個(gè)例子,我們使用z-test進(jìn)行血壓測(cè)量,如156個(gè)單樣本Z檢驗(yàn)。
import pandas as pdfrom scipy import statsfrom statsmodels.stats import weightstats as stestsztest ,pval = stests.ztest(df['bp_before'], x2=None, value=156)print(float(pval))if pval<0.05:    print('reject null hypothesis')else:    print('accept null hypothesis')
雙樣本Z檢驗(yàn):在兩個(gè)樣本z檢驗(yàn)中,類似于t檢驗(yàn),我們檢查兩個(gè)獨(dú)立的數(shù)據(jù)組并確定兩個(gè)組的樣本均值是否相等。
H0:兩組的平均值為0
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')
ANOVA(F-檢驗(yàn)):t檢驗(yàn)在處理兩組時(shí)效果很好,但有時(shí)我們想要同時(shí)比較兩組以上。例如,如果我們想根據(jù)種族等某些分類變量來測(cè)試選民年齡是否不同,我們必須比較每個(gè)級(jí)別的平均值或?qū)ψ兞窟M(jìn)行分組。我們可以為每對(duì)組進(jìn)行單獨(dú)的t檢驗(yàn),但是當(dāng)你進(jìn)行多次檢測(cè)時(shí),你會(huì)增加誤報(bào)的可能性。方差分析或ANOVA是一種統(tǒng)計(jì)推斷測(cè)試,可讓您同時(shí)比較多個(gè)組。

F校驗(yàn)或ANOVA實(shí)例圖

與z和t分布不同,F(xiàn)分布沒有任何負(fù)值,因?yàn)橛捎诿總€(gè)偏差的平方,組內(nèi)變異和組內(nèi)變異總是正的。
單向F檢驗(yàn)(ANOVA):根據(jù)它們的平均相似度和f分?jǐn)?shù)來判斷兩個(gè)或更多個(gè)組是否相似。
示例:有3種不同的植物類別及其重量,需要檢查所有3組是否相似(下面是python代碼)。
df_anova = pd.read_csv('PlantGrowth.csv')df_anova = df_anova[['weight','group']]grps = pd.unique(df_anova.group.values)d_data = {grp:df_anova['weight'][df_anova.group == grp] for grp in grps} F, p = stats.f_oneway(d_data['ctrl'], d_data['trt1'], d_data['trt2'])print('p-value for significance is: ', p)if p<0.05:    print('reject null hypothesis')else:    print('accept null hypothesis')

雙向F檢驗(yàn): 雙向F檢驗(yàn)是單向檢驗(yàn)的擴(kuò)展,當(dāng)我們有2個(gè)自變量和2個(gè)以上的組時(shí)使用它。雙向F檢驗(yàn)并不能說明哪個(gè)變量占主導(dǎo)地位。如果我們需要檢查個(gè)體意義,則需要進(jìn)行事后測(cè)試。
現(xiàn)在讓我們來看看平均作物產(chǎn)量(不是任何小組的平均作物產(chǎn)量),以及每個(gè)因子的平均作物產(chǎn)量,以及組合在一起的因子。
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

卡方檢驗(yàn): 當(dāng)您從單個(gè)總體中獲得兩個(gè)分類變量時(shí),將應(yīng)用此測(cè)試。它用于確定兩個(gè)變量之間是否存在顯著關(guān)聯(lián)。
例如,在選舉調(diào)查中,選民可能按性別(男性或女性)和投票偏好(民主黨,共和黨或獨(dú)立團(tuán)體)進(jìn)行分類。我們可以使用卡方檢驗(yàn)來確定獨(dú)立性,以確定性別是否與投票偏好相關(guān)。
以下為python代碼。
df_chi = pd.read_csv('chi-test.csv')contingency_table=pd.crosstab(df_chi['Gender'],df_chi['Shopping?'])print('contingency_table :-\n',contingency_table)#Observed ValuesObserved_Values = contingency_table.values print('Observed Values :\n',Observed_Values)b=stats.chi2_contingency(contingency_table)Expected_Values = b[3]print('Expected Values :-\n',Expected_Values)no_of_rows=len(contingency_table.iloc[0:2,0])no_of_columns=len(contingency_table.iloc[0,0:2])ddof=(no_of_rows-1)*(no_of_columns-1)print('Degree of Freedom:-',ddof)alpha = 0.05from scipy.stats import chi2chi_square=sum([(o-e)**2./e for o,e in zip(Observed_Values,Expected_Values)])chi_square_statistic=chi_square[0]+chi_square[1]print('chi-square statistic:-',chi_square_statistic)critical_value=chi2.ppf(q=1-alpha,df=ddof)print('critical_value:',critical_value)#p-valuep_value=1-chi2.cdf(x=chi_square_statistic,df=ddof)print('p-value:',p_value)print('Significance level: ',alpha)print('Degree of Freedom: ',ddof)print('chi-square statistic:',chi_square_statistic)print('critical_value:',critical_value)print('p-value:',p_value)if chi_square_statistic>=critical_value:    print('Reject H0,There is a relationship between 2 categorical variables')else:    print('Retain H0,There is no relationship between 2 categorical variables')    if p_value<=alpha:    print('Reject H0,There is a relationship between 2 categorical variables')else:    print('Retain H0,There is no relationship between 2 categorical variables')

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多