Tilastollinen merkitsevyys

Otoksessa havaitut erot ja riippuvuudet koskevat otosta.

Tärkeä kysymys: Onko otoksessa havaittu ero tai riippuvuus niin suuri, että se ei voi olla pelkkää sattumaa (otantavirhettä)? Jos ero tai riippuvuus on niin suuri, että se ei voi olla pelkkää sattumaa, niin silloin se on tilastollisesti merkitsevä ja voidaan yleistää siihen isompaan joukkoon, josta otos on poimittu.

Tilastollinen merkitsevyys selviää p-arvon avulla: p-arvo on todennäköisyys sille, että ero tai riippuvuus on pelkkää sattumaa (otantavirhettä).

Mitä pienempi p-arvo sitä merkitsevämpi ero tai riippuvuus. Vakiintuneen tavan mukaan alle 0,05 (5 %) suuruisia p-arvoja pidetään merkitsevinä.

Lue lisää https://tilastoapu.wordpress.com/2012/02/14/p-arvo/

In [1]:
import pandas as pd
import scipy.stats as stats

df = pd.read_excel('http://taanila.fi/data1.xlsx', sheet_name = 'Data')
df.head()
Out[1]:
nro sukup ikä perhe koulutus palveluv palkka johto työtov työymp palkkat työteht työterv lomaosa kuntosa hieroja
0 1 1 38 1 1.0 22.0 3587 3 3.0 3 3 3 NaN NaN NaN NaN
1 2 1 29 2 2.0 10.0 2963 1 5.0 2 1 3 NaN NaN NaN NaN
2 3 1 30 1 1.0 7.0 1989 3 4.0 1 1 3 1.0 NaN NaN NaN
3 4 1 36 2 1.0 14.0 2144 3 3.0 3 3 3 1.0 NaN NaN NaN
4 5 1 24 1 2.0 4.0 2183 2 3.0 2 1 2 1.0 NaN NaN NaN
In [2]:
#Pearsonin korrelaatio ja 2-suuntainen p-arvo
stats.pearsonr(df['ikä'], df['palkka'])
Out[2]:
(0.2968719048961779, 0.0067615145801081964)

Iän ja palkan välinen Pearsonin korrelaatio 0,30 on tilastollisesti merkitsevä (2-suuntainen p = 0,007).

In [3]:
#Spearmanin järjestyskorrelaatio ja 2-suuntainen p-arvo
stats.spearmanr(df['ikä'], df['palkka'])
Out[3]:
SpearmanrResult(correlation=0.3095587335779997, pvalue=0.004654685549528727)

Iän ja palkan välinen Spearmanin järjestyskorrelaatio 0,31 on tilastollisesti merkitsevä (2- suuntainen p = 0,005).

In [4]:
#Khiin neliö -testi: khiin neliö, p-arvo, vapausasteet, odotetut frekvenssit
stats.chi2_contingency(pd.crosstab(df['sukup'], df['perhe']))
Out[4]:
(3.9518615218205753,
 0.046819548114598535,
 1,
 array([[23.81707317, 39.18292683],
        [ 7.18292683, 11.81707317]]))

Sukupuolen ja perhesuhteen välinen riippuvuus on tilastollisesti merkitsevä (khiin neliö -testin p = 0,047).

In [5]:
#Riippumattomien otosten t-testin t ja 2-suuntainen p-arvo
a=df['palkka'][df['sukup']==1] #Mies
b=df['palkka'][df['sukup']==2] #Nainen
print(a.mean())
print(b.mean())
stats.ttest_ind(a,b,equal_var=False)
2663.746031746032
2232.7368421052633
Out[5]:
Ttest_indResult(statistic=3.0597612743474714, pvalue=0.003048272029697872)

Miesten (keskiarvo 2664 euroa) ja naisten (keskiarvo 2233 euroa) palkkakeskiarvojen välillä on tilastollisesti merkitsevä ero (kahden riippumattoman otoksen 2-suuntaisen t-testin p = 0,003).

In [6]:
#Mann-Whithney U -testin U ja p-arvo
stats.mannwhitneyu(a,b)
Out[6]:
MannwhitneyuResult(statistic=410.5, pvalue=0.019611152715409058)

Mann-Whitney U -testin mukaan miesten ja naisten palkkojen välillä on tilastollisesti merkitsevä ero (p = 0,020).

In [7]:
#Yksisuuntaisen varianssianalyysin F ja p-arvo
k1=df['palkka'][df['koulutus']==1] #peruskoulu
k2=df['palkka'][df['koulutus']==2] #2. aste
k3=df['palkka'][df['koulutus']==3] #korkeakoulu
k4=df['palkka'][df['koulutus']==4] #ylempi korkeakoulu
stats.f_oneway(k1,k2,k3,k4)
Out[7]:
F_onewayResult(statistic=11.675086950951924, pvalue=2.186573534680074e-06)

Palkkakeskiarvoissa on tilastollisesti merkitseviä eroja eri koulutustasojen välillä (yksisuuntaisen varianssianalyysin p < 0,001).

In [8]:
#Kruskal-Wallis -testin H ja p-arvo
stats.kruskal(k1, k2, k3, k4)
Out[8]:
KruskalResult(statistic=10.983022700942131, pvalue=0.011818033370911517)

Kruskall-Wallis -testin mukaan palkoissa on tilastollisesti merkitseviä eroja eri koulutustasoilla (p = 0,012).