<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          【經(jīng)典】假設(shè)檢驗(yàn)在數(shù)據(jù)分析中的應(yīng)用

          共 6046字,需瀏覽 13分鐘

           ·

          2020-10-06 23:54


          • 前言

          • Z檢驗(yàn)

          • T檢驗(yàn)

            • 獨(dú)立樣本t檢驗(yàn)

            • 配對(duì)樣本t檢驗(yàn)

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

          前言

          在這篇文章中,我不會(huì)具體去推導(dǎo)檢驗(yàn)統(tǒng)計(jì)量和相應(yīng)拒絕域的得出,這對(duì)于大部分非統(tǒng)計(jì)學(xué)專業(yè)的人士來(lái)說(shuō)是晦澀的,我只想通過(guò)一個(gè)案例告訴大部分初學(xué)者假設(shè)檢驗(yàn)怎么在數(shù)據(jù)挖掘中使用。

          %matplotlib?inline
          import?matplotlib.pyplot?as?plt
          import?pandas?as?pd
          import?numpy?as?np
          import?seaborn?as?sns
          from?scipy?import?stats
          from?statsmodels.stats?import?weightstats?as?mstats

          df_exams?=?pd.read_csv('./StudentsPerformance.csv')
          df_exams.head()
          df_exams.rename(columns={'race/ethnicity':'ethnicity'},inplace=True)
          df_exams.rename(columns={'parental?level?of?education':'parents_education'},inplace=True)
          df_exams.rename(columns={'test?preparation?course':'test_prep_course'},inplace=True)
          df_exams.rename(columns={'math?score':'math_score'},inplace=True)
          df_exams.rename(columns={'reading?score':'reading_score'},inplace=True)
          df_exams.rename(columns={'writing?score':'writing_score'},inplace=True)

          查看前5行的信息

          df_exams.head()

          接下來(lái)查看類別型數(shù)據(jù)是否均勻,數(shù)值型數(shù)據(jù)是否服從正態(tài)分布。

          df_exams['ethnicity'].value_counts()
          group C    319
          group D 262
          group B 190
          group E 140
          group A 89
          Name: ethnicity, dtype: int64

          以宗族信息這一列為例,可以看出C的占比較重,group A 只有89例。這也就說(shuō)明當(dāng)選擇從每個(gè)group抽取80個(gè)樣本是不合適的,因?yàn)檫@對(duì)A來(lái)說(shuō)每次抽取,樣本信息幾乎沒(méi)有發(fā)生什么變化。

          exams?=?['math_score','reading_score','writing_score']
          for?exam?in?exams:
          ????y?=?df_exams[exam]
          ????plt.figure(1);?plt.title('Normal')
          ????sns.distplot(y,?kde=False,?fit=stats.norm)

          ????plt.figure(2);?plt.title('Johnson?SU')
          ????sns.distplot(y,?kde=False,?fit=stats.johnsonsu)

          ????fig?=?plt.figure()
          ????res?=?stats.probplot(df_exams[exam],?plot=plt)
          ????plt.show()

          這些圖片說(shuō)明數(shù)據(jù)并不是完全服從正態(tài)分布,密度函數(shù)的尾部與正態(tài)分布有些偏離,但大體還是可以認(rèn)為近似服從正態(tài)分布的,如果數(shù)據(jù)不服從正態(tài)分布,Z檢驗(yàn)和T檢驗(yàn)將是無(wú)法使用的。到目前為止請(qǐng)注意,我們用的都是全部的數(shù)據(jù)喲,而假設(shè)檢驗(yàn)的思想是用樣本的信息來(lái)推斷總體的信息,所以接下來(lái)我們要從總體中取出樣本。

          #?從總體中隨機(jī)抽取一定比例的樣本
          df_exams?=?df_exams.sample(frac=1)

          假設(shè)檢驗(yàn)被用來(lái)以科學(xué)嚴(yán)謹(jǐn)?shù)姆绞綑z驗(yàn)一個(gè)關(guān)于數(shù)據(jù)的理論,這樣我們就不會(huì)僅僅依賴于偶然性或主觀假設(shè)。接下來(lái)我們要進(jìn)行的是兩個(gè)正態(tài)總體均值的檢驗(yàn),以學(xué)生分?jǐn)?shù)為例,就是去檢驗(yàn)兩個(gè)不同的group的分?jǐn)?shù)是否有明顯的不同。當(dāng)建立一個(gè)假設(shè)檢驗(yàn)時(shí),有一個(gè)原假設(shè)一個(gè)備擇假設(shè)。還必須設(shè)置顯著性水平,通常為5%(Scipy,statsmodel)。假設(shè)檢驗(yàn)可以分為單尾或雙尾。單尾的情況,例如,“A組得分>B組”。雙尾的情況例如“A組的得分與B組不同”。簡(jiǎn)單介紹了這些接下來(lái),我們從a組和B組各抽取50名學(xué)生作為樣本,然后計(jì)算該數(shù)據(jù)樣本的Z分?jǐn)?shù)。

          ?

          z分?jǐn)?shù)可以回答這樣一個(gè)問(wèn)題:“一個(gè)給定數(shù)距離平均數(shù)多少個(gè)標(biāo)準(zhǔn)差?”,在平均數(shù)之上的分?jǐn)?shù)會(huì)得到一個(gè)正的標(biāo)準(zhǔn)分?jǐn)?shù),在平均數(shù)之下的分?jǐn)?shù)會(huì)得到一個(gè)負(fù)的標(biāo)準(zhǔn)分?jǐn)?shù)。z分?jǐn)?shù)是一種可以看出某分?jǐn)?shù)在分布中相對(duì)位置的方法。

          ?
          group_a_sample?=?df_exams[df_exams['ethnicity']?==?'group?A']
          group_a_sample?=?group_a_sample[:50]

          #?繪制QQ圖,檢驗(yàn)正態(tài)性
          fig?=?plt.figure()
          res?=?stats.probplot(group_a_sample['math_score'],?plot=plt)
          plt.show()

          group_b_sample?=?df_exams[df_exams['ethnicity']?==?'group?B']
          group_b_sample?=?group_b_sample[:50]

          fig?=?plt.figure()
          res?=?stats.probplot(group_b_sample['math_score'],?plot=plt)
          plt.show()

          print(stats.zscore(group_a_sample['math_score']))
          print(stats.zscore(group_b_sample['math_score']))
          [ 0.47126865  0.05544337  2.06526555  0.26335601  0.33266022 -0.01386084
          0.26335601 -0.77620719 0.05544337 0.54057286 -1.67716196 -0.01386084
          -0.91481561 2.68900347 -1.19203247 1.37222342 -0.70690297 -0.56829455
          0.7484855 -0.56829455 -0.70690297 -0.49899034 0.26335601 1.09500657
          0.67918129 -1.60785775 0.33266022 0.47126865 -0.2910777 -0.36038191
          0.67918129 -0.8455114 -1.8850746 -0.42968612 0.7484855 -1.46924932
          -0.98411983 1.09500657 -0.98411983 0.47126865 -0.15246927 1.7880487
          -0.2910777 0.1940518 -0.15246927 -0.56829455 0.12474758 2.48109083
          -0.22177348 -1.39994511]
          [-0.68278212 -2.57240054 -0.05290932 -1.69057861 0.26202709 -0.17888388
          -0.24187116 0.57696349 -0.7457694 -0.17888388 0.70293805 0.82891261
          0.45098893 -0.36784572 0.82891261 0.07306525 -0.93473124 -0.430833
          0.26202709 -0.99771852 1.33281086 -0.87174396 1.5217727 1.89969638
          1.08086173 -0.80875668 0.57696349 0.13605253 -0.99771852 0.63995077
          0.51397621 -1.43862949 2.08865822 -0.36784572 1.64774726 -2.50941326
          -0.55680756 -0.36784572 -0.05290932 1.14384902 -1.50161677 0.32501437
          0.07306525 0.13605253 0.13605253 0.95488717 1.08086173 -0.61979484
          0.19903981 -0.30485844]

          Z檢驗(yàn)

          下面的代碼是z測(cè)試的一個(gè)示例。測(cè)試是看A組樣本的“數(shù)學(xué)平均得分”是否小于總體平均值。

          A組學(xué)生的平均“數(shù)學(xué)成績(jī)”與總體平均值相同。

          A組學(xué)生的平均“數(shù)學(xué)成績(jī)”小于總體平均值。

          首先介紹一下statsmodels 包中的 ztest 函數(shù)的一般用法如下:

          #?計(jì)算總體均值和樣本均值
          population_mean?=?df_exams['math_score'].mean()
          sample_group_a_mean?=?group_a_sample['math_score'].mean()
          print(population_mean,sample_group_a_mean)

          #?這是單樣本檢驗(yàn)
          zstats,?pvalue?=?mstats.ztest(group_a_sample['math_score'],x2=None,value=population_mean,alternative='smaller')
          print(pvalue)
          66.089 61.2
          0.008850880637695917

          可以看出P值非常的小,小于5%,則在顯著性水平為5%的條件下,我們要拒絕原假設(shè)

          T檢驗(yàn)

          在T檢驗(yàn)中,假設(shè)樣本為正態(tài)分布,且總體參數(shù)未知。有3種情況:

          • 獨(dú)立樣本t檢驗(yàn),比較兩個(gè)樣本所代表的兩個(gè)總體均值是否存在顯著差異。除了要求樣本來(lái)自正態(tài)分布,還要求兩個(gè)樣本的總體方差相等(ttest_ind)

          • 配對(duì)樣本t檢驗(yàn),配對(duì)樣本主要是同一實(shí)驗(yàn)前后效果的比較,或者同一樣品用兩種方法檢驗(yàn)結(jié)果的比較。可以把配對(duì)樣本的差作為變量(ttest_rel)

          • 單樣本t檢驗(yàn),單樣本t檢驗(yàn)是樣本均值與總體均值的比較問(wèn)題。其中總體服從正態(tài)分布,總體的方差未知,從正態(tài)總體中抽樣得到n個(gè)個(gè)體組成抽樣樣本,計(jì)算抽樣樣本均值和標(biāo)準(zhǔn)差,判斷總體均值與抽樣樣本均值是否相同。(ttest_1samp)

          下面是這3個(gè)假設(shè)檢驗(yàn)的例子。注意:樣本的隨機(jī)性導(dǎo)致他們可能通過(guò)也可能不通過(guò)假設(shè),所以可能你得到的結(jié)論和我不同。

          獨(dú)立樣本t檢驗(yàn)

          讓我們來(lái)看看A組和B組在“數(shù)學(xué)成績(jī)”功能上的得分是否不同。

          =樣本組A的平均“數(shù)學(xué)成績(jī)”與樣本組B相同。

          =樣本組A的平均“數(shù)學(xué)成績(jī)”與樣本組B不同。

          在5%顯著性水平下測(cè)試。這是一個(gè)雙尾檢驗(yàn)。

          #?當(dāng)不確定兩總體方差是否相等時(shí),應(yīng)先利用levene檢驗(yàn),檢驗(yàn)兩總體是否具有方差齊性。
          print(stats.levene(group_a_sample['math_score'],group_b_sample['math_score']))
          print(group_a_sample['math_score'].var(),group_b_sample['math_score'].var())

          tscore,pvalue?=?stats.ttest_ind(group_a_sample['math_score'],group_b_sample['math_score'],equal_var=False)
          print(pvalue)

          print(group_a_sample['math_score'].mean(),group_b_sample['math_score'].mean())
          LeveneResult(statistic=0.3789408560110682, pvalue=0.5395976230546553)
          212.44897959183675 257.1983673469388
          0.39114162148079246
          61.2 63.84

          P值小于5%,則在顯著性水平為5%的條件下,我們應(yīng)拒絕原假設(shè),認(rèn)為兩組成績(jī)不相同。

          配對(duì)樣本t檢驗(yàn)

          接下來(lái)看看A組在“數(shù)學(xué)成績(jī)”和“閱讀成績(jī)”上的得分是否不同。

          =樣本組A的平均“數(shù)學(xué)成績(jī)”與“閱讀成績(jī)”相同。

          =樣本組A的平均“數(shù)學(xué)成績(jī)”與“閱讀成績(jī)”不同。

          在5%顯著性水平下測(cè)試。使用ttest_rel,這是一個(gè)雙尾檢驗(yàn)。

          tscore,pvalue?=?stats.ttest_rel(group_a_sample['math_score'],group_a_sample['reading_score'])
          print(pvalue)

          print(group_a_sample['math_score'].mean(),group_a_sample['reading_score'].mean())
          0.025329567098176128
          61.2 64.26

          P值小于5%,則在顯著性水平為5%的條件下,我們應(yīng)拒絕原假設(shè),認(rèn)為兩個(gè)科目的成績(jī)不相同。

          單樣本t檢驗(yàn)

          讓我們看看A組樣本的平均“數(shù)學(xué)分?jǐn)?shù)”是否與總體平均值相同。

          =樣本組A的平均“數(shù)學(xué)成績(jī)”與總體“數(shù)學(xué)成績(jī)”平均值相同。

          =樣本組A的平均“數(shù)學(xué)成績(jī)”與總體“數(shù)學(xué)成績(jī)”平均數(shù)不同。

          在5%顯著性水平下測(cè)試。這是一個(gè)雙尾測(cè)試。

          tscore,pvalue?=?stats.ttest_1samp(group_a_sample['math_score'],df_exams['math_score'].mean())
          print(pvalue)

          print(group_a_sample['math_score'].mean(),df_exams['math_score'].mean())
          0.02167469754070706
          61.2 66.089

          P值小于5%,則在顯著性水平為5%的條件下,我們應(yīng)拒絕原假設(shè)。

          瀏覽 60
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  久九九久频精品短视频 | 国产美女精品视频国产 | 人人人人搞 | 亚洲视频在线免费观 | 天堂AV-区二区 |