亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

假設檢驗怎么做?這次把方法+Python代碼一并教給你

系統 2042 0
原文鏈接: https://mp.weixin.qq.com/s/fguoDXktD4RbivRtV6P3yQ#rd
(圖片付費下載于視覺中國)

作者 | Jose Garcia

譯者 | 張睿毅

校對 | 張一豪、林亦霖

編輯 | 于騰凱

來源 | 數據派THU(ID:DatapiTHU)

【導讀】本文中,作者給出了假設檢驗的解讀與Python實現的詳細的假設檢驗中的主要操作。


也許所有機器學習的初學者,或者中級水平的學生,或者統計專業的學生,都聽說過這個術語,假設檢驗。 我將簡要介紹一下這個當我學習時給我帶來了麻煩的主題。我把所有這些概念放在一起,并使用python進行示例。

在我尋求更廣泛的事情之前要考慮一些問題?—— 什么是假設檢驗?我們為什么用它?什么是假設的基本條件?什么是假設檢驗的重要參數?

讓我們一個個地開始吧:

1、?什么是假設檢驗?

假設檢驗是一種統計方法,用于使用實驗數據進行統計決策。假設檢驗基本上是我們對人口參數做出的假設。

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

我們假設所有這些例子都需要一些統計方法來證明這些。無論我們假設什么是真的,我們都需要一些數學結論。


2、我們為什么要用它?

假設檢驗是統計學中必不可少的過程。假設檢驗評估關于總體的兩個相互排斥的陳述,以確定樣本數據最佳支持哪個陳述。當我們說一個發現具有統計學意義時,這要歸功于一個假設檢驗。

3、什么是假設的基本條件?

假設檢驗怎么做?這次把方法+Python代碼一并教給你_第2張圖片

?不同均值和方差下的正態分布


假設的基礎是規范化和標準規范化

https://en.wikipedia.org/wiki/Normalization_(statistics);https://stats.stackexchange.com/questions/10289/whats——the——difference——between——normalization——and——standardization

我們所有的假設都圍繞這兩個術語的基礎。讓我們看看這些。

假設檢驗怎么做?這次把方法+Python代碼一并教給你_第3張圖片

標準化的正態曲線圖像和數據分布及每個部分的百分比

你一定想知道這兩個圖像之間有什么區別,有人可能會說我找不到,而其他人看到的圖像會比較平坦,而不是陡峭的。好吧伙計這不是我想要表達的,首先你可以看到有不同的正態曲線所有那些正態曲線可以有不同的均值和方差,如第二張圖像,如果你注意到圖形是合理分布的,總是均值= 0和方差= 1。當我們使用標準化的正態數據時,z—score的概念就出現了。

正態分布

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

假設檢驗怎么做?這次把方法+Python代碼一并教給你_第4張圖片

正態分布方程

假設檢驗怎么做?這次把方法+Python代碼一并教給你_第5張圖片

標準化正態分布

標準正態分布是平均值為0,標準差為1的正態分布


4、哪些是假設檢驗的重要參數?

  • 零假設:

在推論統計中,零假設是一種普遍的說法或默認的觀點,即兩個測量現象之間沒有關系,或者分組間沒有關聯

換句話說,它是一個基本假設,或基于領域或問題知識。

示例:公司的生產力=50個單位/天等

  • ?備擇假設:

另一種假設是假設檢驗中使用的假設與零假設相反。通常認為觀察是真實效果的結果(疊加了一定量的偶然的變化)

零假設與備擇假設

示例:公司生產≠50單位/每天等。

重要程度: 指我們接受或拒絕無效假設的重要程度。接受或拒絕假設不可能100%準確,因此我們選擇通常為5%的重要程度。

這通常用alpha(數學符號)表示,通常為0.05或5%,這意味著您的輸出應該有95%的信心在每個樣本中給出類似的結果。

I型錯誤: 當我們拒絕零假設時,盡管該假設是正確的。類型I錯誤由alpha表示。在假設檢驗中,顯示關鍵區域的正常曲線稱為α區域。

II型錯誤: 當我們接受零假設但它是錯誤的。II型錯誤用beta表示。在假設檢驗中,顯示接受區域的正常曲線稱為β區域。

單尾測試: 統計假設的測試,其中拒絕區域僅在采樣分布的一側,稱為單尾測試。

例如:一所大學有≥4000名學生或數據科學≤80%采用的組織。

雙尾測試: 雙尾測試是一種統計測試,其中分布的關鍵區域是雙側的,并測試樣本是否大于或小于某個值范圍。如果被測試的樣本屬于任一關鍵區域,則接受替代假設而不是零假設。

例如:一所大學!= 4000名學生或數據科學!= 80%的組織采用。

假設檢驗怎么做?這次把方法+Python代碼一并教給你_第7張圖片

單尾和雙尾圖像

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

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

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

H0: 硬幣是一個公平的硬幣。
H1: 硬幣是一個狡猾的硬幣。并且alpha = 5%或0.05

現在讓我們擲硬幣并計算p值(概率值)。

第一次投擲硬幣,結果是尾部P值= 50%(頭部和尾部的概率相等)
第二次拋硬幣,結果是尾巴,現在p值= 50/2 = 25%

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

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

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

使用該約束,數據集中的第一個值可以自由變化。無論它是什么價值,所有10個數字的總和仍然可以具有35的值。第二個值也可以自由變化,因為無論你選擇什么值,它仍然允許所有值的總和的可能性是35歲。

現在讓我們看一些廣泛使用的假設檢驗類型:

  1. T校驗(學生T校驗)
  2. Z校驗
  3. ANOVA校驗
  4. 卡方檢驗

T—檢驗: t檢驗是一種推論統計量,用于確定在某些特征中可能與兩組的均值之間是否存在顯著差異。它主要用于數據集,如通過翻轉硬幣100次記錄為結果的數據集,將遵循正態分布并且可能具有未知的方差。
鏈接:?
https://www.investopedia.com/terms/v/variance.asp

T檢驗用作假設檢驗工具
鏈接:?
https://www.investopedia.com/terms/h/hypothesistesting.asp

其允許 測試適用于群體的假設。

T檢驗有兩種類型:

  1. 單樣本t檢驗
  2. 雙樣本t檢驗

單樣本t檢驗: 單樣本t檢驗確定樣本均值是否與已知或假設的總體均值具有統計學差異。單樣本t檢驗是參數檢驗。

例如:你有10個年齡,你正在檢查平均年齡是否為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”)
                
              

上面代碼的結果如下:
?
單樣本t測試結果

雙樣本t檢驗: 獨立樣本t檢驗或雙樣本t檢驗比較兩個獨立組的平均值,以確定是否有統計證據表明相關的人口均值存在顯著差異。獨立樣本t檢驗是參數檢驗。該測試也稱為:獨立t檢驗。

示例:在week1和week2之間是否存在任何關聯(代碼在下面的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校驗結果

配對樣本t檢驗:配對樣本t檢驗也稱為依賴樣本t檢驗。這是一個單變量測試,測試2個相關變量之間的顯著差異。這方面的一個例子是,如果您在某些治療,病癥或時間點之前和之后收集個人的血壓。

H0:表示兩個樣本之間的差異為0。
H1:兩個樣本之間的平均差異不是0。

執行下面的代碼可以得到同樣的結果。
                
                  import pandas as pd	
from scipy import stats	
df = 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")
                
              
?
什么時候可以運行Z校驗。

在統計學中使用幾種不同類型的校驗(即f檢驗,卡方檢驗,t檢驗)
鏈接:
https://www.statisticshowto.datasciencecentral.com/ probability——and——statistics/hypothesis——testing/f——test/
https://www.statisticshowto.datasciencecentral.com/probability——and——statistics/chi——square/
https://www.statisticshowto. datasciencecentral.com/probability——and——statistics/t——test/?

在下列情況下,您將使用Z測試:

  • 您的樣本量大于30, 否則,請使用t檢驗。

鏈接:?
https://www.statisticshowto.datasciencecentral.com/probability——and——statistics/find——sample——size/
  • 數據點應彼此獨立, 換句話說,一個數據點不相關或不影響另一個數據點。

鏈接:?
https://www.statisticshowto.datasciencecentral.com/probability——and——statistics/dependent——events——independent/
  • 您的數據應該是正常分布的。但是,對于大樣本量(超過30個),這并不總是重要的。

  • 您的數據應從人口中隨機選擇,每個項目都有相同的選擇機會。

  • 如果可能的話,樣本量應該相等。


再舉一個例子,我們使用z-test進行血壓測量,如156個單樣本Z檢驗。
                
                  import pandas as pd	
from 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檢驗: 在兩個樣本z檢驗中,類似于t檢驗,我們檢查兩個獨立的數據組并確定兩個組的樣本均值是否相等。

H0:兩組的平均值為0
H1:兩組的平均值不為0

例:我們檢查血液之后和血液數據之前的血液數據。(下面是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-檢驗): t檢驗在處理兩組時效果很好,但有時我們想要同時比較兩組以上。例如,如果我們想根據種族等某些分類變量來測試選民年齡是否不同,我們必須比較每個級別的平均值或對變量進行分組。我們可以為每對組進行單獨的t檢驗,但是當你進行多次檢測時,你會增加誤報的可能性。 方差分析或ANOVA,是一種統計推斷測試,可讓您同時比較多個組。
鏈接:
https://en.wikipedia.org/ wiki/Analysis_of_variance

F =組間變異性/組間變異性

F校驗或ANOVA實例圖

與z和t分布不同,F分布沒有任何負值,因為由于每個偏差的平方,組內變異和組內變異總是正的。

單向F檢驗(ANOVA):根據它們的平均相似度和f分數來判斷兩個或更多個組是否相似。

示例:有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檢驗:?雙向F檢驗是單向檢驗的擴展。 當我們有2個自變量和2個以上的組時使用它。雙向F檢驗并不能說明哪個變量占主導地位。如果我們需要檢查個體意義,則需要進行事后測試。
鏈接:
https://stattrek.com/Help/Glossary.aspx? Target=Categorical%20variable

現在讓我們來看看平均作物產量(不是任何小組的平均作物產量),以及每個因子的平均作物產量,以及組合在一起的因子。

                
                  import statsmodels.api as sm	
from statsmodels.formula.api import olsdf_anova2 =	
 pd.read_csv	
("https://raw.githubusercontent.com/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
                
              

卡方檢驗:? 當您從單個總體中獲得兩個分類變量時, 將應用此測試。它用于確定兩個變量之間是否存在顯著關聯。
鏈接:
https://stattrek.com/Help/ Glossary.aspx?Target=Categorical%20variable

例如,在選舉調查中,選民可能按性別(男性或女性)和投票偏好(民主黨,共和黨或獨立團體)進行分類。我們可以使用卡方檢驗來確定獨立性,以確定性別是否與投票偏好相關。

以下為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")
                
              

譯者介紹: 張睿毅,北京郵電大學大二物聯網在讀。我是一個愛自由的人。在郵電大學讀第一年書我就四處跑去蹭課,折騰整一年驚覺,與其在當下焦慮,不如在前輩中沉淀。于是在大二以來,堅持讀書,不敢稍歇。資本主義國家的科學觀不斷刷新我的認知框架,同時因為出國考試很早出分,也更早地感受到自己才是那個一直被束縛著的人。太多真英雄在社會上各自閃耀著光芒。這才開始,立志終身向遇到的每一個人學習。做一個純粹的計算機科學里面的小學生。喜歡 算法,數據挖掘,圖像識別,自然語言處理,神經網絡,人工智能等方向。

原文鏈接:

https://towardsdatascience.com/hypothesis-testing-in-machine-learning-using-python-a0dc89e169ce


(*本文為AI科技大本營轉載文章, 轉載 請聯系作者 )

精彩推薦


倒計時!由易觀攜手CSDN聯合主辦的第三屆易觀算法大賽還剩 7 天,冠軍團隊將獲得3萬元!

本次比賽主要預測訪問平臺的相關事件的PV,UV流量 (包括Web端,移動端等),大賽將會提供相應事件的流量數據,以及對應時間段內的所有事件明細表和用戶屬性表等數據,進行模型訓練,并用訓練好的模型預測規定日期范圍內的事件流量。

推薦閱讀

  • 知乎算法團隊負責人孫付偉: Graph?Embedding在知乎的應用實踐

  • 必看,61篇NeurIPS深度強化學習論文解讀都這里了

  • 打破深度學習局限,強化學習、深度森林或是企業AI決策技術的“良藥”

  • 激光雷達,馬斯克看不上,卻又無可替代?

  • 卷積神經網絡中十大拍案叫絕的操作

  • Docker是啥?容器變革的火花?

  • 5大必知的圖算法,附Python代碼實現

  • 阿里云彈性計算負責人蔣林泉:億級場景驅動的技術自研之路

  • 40 歲身體死亡,11 年后成“硅谷霍金”,他用一塊屏幕改變 100 萬人!

  • AI大神如何用區塊鏈解決模型訓練痛點, AI+區塊鏈的正確玩法原來是這樣…… | 人物志



你點的每個“在看”,我都認真當成了喜歡


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 免费看一区二区三区 | 视频福利网| 成年人免费网址 | 91久久精品视频 | 97精品国产综合久久久久久欧美 | 妖精视频在线看免费视频 | 精品不卡 | 久久精品这里热有精品 | 亚洲不卡在线视频 | 久视频在线| 亚洲国产成人久久77 | 亚洲国产日韩欧美 | 国产免费a视频 | 美国黑人特大一级毛片 | 91在线亚洲综合在线 | 色久综合网 | 色偷偷免费视频 | 亚洲婷婷综合中文字幕第一页 | 九九热精品免费视频 | 日韩 国产 在线 | 美女私人影院 | 欧美日韩不卡在线 | 亚洲国产精品日韩在线 | 四虎色姝姝影院www 四虎色影院 | 99久久国产综合精品麻豆 | 国产成人综合亚洲亚洲欧美 | 亚洲欧美另类久久久精品能播放的 | 韩国成人毛片aaa黄 韩国高清不卡一区二区 | 久久99久久99精品免观看麻豆 | 综合久久久久久中文字幕 | 国产精品毛片一区二区三区 | 亚洲精品第一区二区三区 | 伊色综合久久之综合久久 | 国产伦精品一区二区三区免费迷 | 亚洲欧美日韩一区二区在线观看 | 国产成人精品一区 | 亚洲视频免费在线看 | 在线观看久草视频 | 精品国产乱码久久久久久浪潮 | 免费鲁丝片一级在线观看 | 五月婷婷丁香在线视频 |