E-modyfikatory

In [16]:
#Wyłączam ostrzeżenia dla ładniejszych plików wynikowych
import warnings
warnings.filterwarnings('ignore')
import pandas as pd
import numpy as np
import scipy.stats
import seaborn as sns
from pandas import DataFrame,Series
%matplotlib inline
#Lista e-modyfikatorów które badaliśmy
e_modifiers = ['Wiedział & Agentywna', 'Wiedział & Stan', 'Wiedział & Kauzalna', 
               'Sądził & Agentywna', 'Sądził & Stan', 'Sądził & Kauzalna']
In [17]:
#Wczytanie danych ze wszystkich ankiet o efekcie epistemicznym
d1 = pd.read_csv('cleanIgnacySlawek2169464.csv').dropna(thresh = 9)
d2 = pd.read_csv('cleanData28553.csv').dropna(thresh=13)
d3 = pd.read_csv('cleanData249562.csv').dropna(thresh=13)
#Spojenie wyników
data = pd.concat([d1,d2,d3], ignore_index=True)
#Przefiltrowanie wyników przez e-modyfikatory
data = data[data['Modyfikator'].isin(e_modifiers)]

Tabela wyników (liczba wystąpień)

In [18]:
#Tabela krzyżowa
e_mod_x_table = pd.crosstab(data['Modyfikator'], [data['Grupa'],data['Odpowiedź']])
e_mod_x_table
Out[18]:
Grupa Harm Help
Odpowiedź Nie Tak Nie Tak
Modyfikator
Sądził & Agentywna 17 39 47 25
Sądził & Kauzalna 16 55 33 35
Sądził & Stan 18 55 32 37
Wiedział & Agentywna 1 80 6 68
Wiedział & Kauzalna 3 53 15 60
Wiedział & Stan 5 62 19 55

Tabela wyników (procentowo)

In [19]:
#Procentowa tabela krzyżowa
e_mod_x_table_percent = e_mod_x_table.apply(lambda r: r/r.sum(level = 'Grupa'), axis=1)
e_mod_x_table_percent.round(3) * 100
Out[19]:
Harm Help
Nie Tak Nie Tak
Modyfikator
Sądził & Agentywna 30.4 69.6 65.3 34.7
Sądził & Kauzalna 22.5 77.5 48.5 51.5
Sądził & Stan 24.7 75.3 46.4 53.6
Wiedział & Agentywna 1.2 98.8 8.1 91.9
Wiedział & Kauzalna 5.4 94.6 20.0 80.0
Wiedział & Stan 7.5 92.5 25.7 74.3
In [20]:
#Liczenie statystyki testowej chi-square oraz wartości P dla pary Harm/Help przy każdym e-modyfikatorze
gb = e_mod_x_table.groupby(level='Modyfikator')
chisquaretests = {}
for name, group in gb:
    chisquaretests[name] = scipy.stats.chi2_contingency([group['Harm'].unstack(), group['Help'].unstack()]) 
    chisq = {}
    pvalue = {}
    for key, value in chisquaretests.items():
        chisq[key] = value[0]
        pvalue[key] = value[1]
        e_mod_x_table['Chi^2'] = Series(chisq)
        e_mod_x_table['P-value'] = Series(pvalue)
e_mod_x_table
Out[20]:
Grupa Harm Help Chi^2 P-value
Odpowiedź Nie Tak Nie Tak
Modyfikator
Sądził & Agentywna 17 39 47 25 14.000000 0.000183
Sądził & Kauzalna 16 55 33 35 9.175127 0.002453
Sądził & Stan 18 55 32 37 6.413718 0.011324
Wiedział & Agentywna 1 80 6 68 2.792849 0.094686
Wiedział & Kauzalna 3 53 15 60 4.630271 0.031413
Wiedział & Stan 5 62 19 55 7.019141 0.008064
In [21]:
#Rysowanie wykresu
sns.set_context("poster", font_scale=1.4)
df_percent = DataFrame(e_mod_x_table_percent.unstack()).reset_index().rename(columns={0:'Freq'})
s = sns.factorplot(y='Freq', x='Odpowiedź', data=df_percent, kind='bar', col = 'Modyfikator', row = 'Grupa')
s.set_titles('{col_name}');
s.fig.subplots_adjust(wspace=.02, hspace=.5)
s.fig.text(0, 0.80,'Warunek \n   HELP', fontsize=35, rotation=90)
s.fig.text(0, 0.30,'Warunek \n  HARM', fontsize=35, rotation=90);
In [ ]: