Rola modyfikatorów w efekcie Knobe’a. Raport z badania eksperymentalnego

Jan Winkowski

Cel Badania

Tak zwany efekt Knobe’a (lub efekt efektu ubocznego, w skrócie EK) to widoczna różnica w przypisywaniu postaw sprawcy danego działania w zależności od tego, jak wartościowany moralnie jest efekt uboczny tego działania. W pierwszych badaniach nad tym zjawiskiem ich autor Joshua Knobe (2003) zademonstrował tego rodzaju różnice w wypadku pojęcia działania intencjonalnego. Badanym przedstawiano jeden z dwóch scenariuszy (HARM lub HELP), a następnie zadawano pytanie, czy bohater scenariusza umyślnie (intentionally) spowodował dany efekt uboczny:

Polski odpowiednik scenariusza HARM Polski odpowiednik scenariusza HELP
Wicedyrektor zwraca się do dyrektora pewnej firmy: „Myślimy o wdrożeniu nowego programu. Pozwoli nam zwiększyć zyski, ale zaszkodzi środowisku”.
Dyrektor odpowiada: „Nie obchodzi mnie szkodzenie środowisku. Chcę tylko zwiększyć zyski. Wdrażamy program”.
Program został wdrożony i rzeczywiście zaszkodził środowisku.
Wicedyrektor zwraca się do dyrektora pewnej firmy: „Myślimy o wdrożeniu nowego programu. Pozwoli nam zwiększyć zyski i pomoże środowisku”.
Dyrektor odpowiada: „Nie obchodzi mnie pomaganie środowisku. Chcę tylko zwiększyć zyski. Wdrażamy program”.
Program został wdrożony i rzeczywiście pomógł środowisku.
Pytania zadawane ankietowanym Pytania zadawane ankietowanym
1. Czy dyrektor umyślnie [w oryginale angielskim intentionally] zaszkodził środowisku?
2. Oceń poziom winy, jaką dyrektor ponosi za zaszkodzenie środowisku
1. Czy dyrektor umyślnie [w oryginale angielskim intentionally] pomógł środowisku?
2. Oceń poziom zasługi, jaką dyrektor ponosi za zaszkodzenie środowisku

Zgodnie z wynikami uzyskanymi przez Knobe’a w wypadku, gdy działanie podmiotu miało negatywny skutek uboczny (scenariusz HARM), 82% badanych przypisywało działaniom podmiotu intencjonalność, gdy miało ono pozytywny skutek uboczny (scenariusz HELP), jedynie 23%.

Wkrótce po ogłoszeniu pierwszych wyników kolejne eksperymenty pokazały, że podobny efekt można zaobserwować również w wypadku pojęć innych niż „intencjonalnie” (np. Pettit & Knobe 2009, Tannenbaum i in. 2009, Beebe & Buckwalter 2010). Wyniki te są używane jako argument za tym, że efekt Knobe’a jest szerszym mechanizmem, który zostaje uruchomiony w pewnych konkretnych okolicznościach. Na podstawie zebranych wyników trudno jest jednak dokładnie ocenić, jakie to okoliczności oraz kiedy dokładnie mamy do czynienia z EK (por. np. Knobe 2010, Paprzycka 2015).

Celem naszego badania było ustalenie, kiedy mamy do czynienia z EK. Ponieważ zgadywanie, jakie pojęcia są podatne na efekt Knobe’a, a następne ich konsekwentne testowanie, byłoby żmudne, czasochłonne i nie gwarantowało, że kiedykolwiek otrzymamy ostateczną ich listę, w badaniu próbuje się rozwiązać ten problem od drugiej strony – testując wyrażenia, które nie powinny wywoływać efektu Knobe’a.

Konstrukcja badania

Hipotezy badawcze

W badaniu wykorzystaliśmy polskie odpowiedniki scenariusza HARM i HELP, zadawaliśmy jednak inne pytania. Badanie składało się z dwóch części: w badaniu kontrolnym sprawdzaliśmy, w jaki sposób badani reagują, kiedy wyrażenie przypisujące czyn sprawcy nie jest modyfikowane żadnym wyrażeniem (Czy dyrektor zaszkodził/pomógł środowisku?). W badaniu głównym sprawdzaliśmy ich reakcje na dziwaczne modyfikatory działania (Czy dyrektor [dziwny modyfikator] zaszkodził/pomógł środowisku?).

Gdyby w badaniu kontrolnym nie pojawił się EK, oznaczałoby to, że do jego wystąpienia nie wystarczy odpowiednie połączenie nacechowanego efektu ubocznego wraz z konkretnym czasownikiem, z którym związane jest przypisanie winy lub zasługi (czyli np. czasownikiem szkodzić lub pomagać). Natomiast wskazywałoby na to, EK wywoływany jest łącznie przez dwa czynniki: odpowiednią sytuację (tj. moralnie nacechowany efekt uboczny) oraz odpowiednią modyfikacją wyrażenia, którym nadawca dokonuje przypisania winy lub zasługi. Wtedy drugie badanie sprawdzi, jakiego rodzaju modyfikatory zapewniają pojawienie się EK.

Badanie miało na celu sfalsyfikowanie następującej hipotezy:

(H) Badani przypiszą winę w sposób zgodny z efektem Knobe’a mimo braku modyfikatora lub użycia niewłaściwych modyfikatorów.

Pierwszy człon alternatywy został sprawdzony w badaniu kontrolnym, drugi w badaniu głównym. Badanie kontrolne testuje szerszą wersję wyjaśnienia EK, mianowicie:

(H’) Efekt Knobe’a powstaje, gdy badany przypisuje winę (lub zasługę) sprawcy moralnie nacechowanego efektu ubocznego.

Badanie główne testuje odrobinę węższą hipotezę, tzn:

(H’’) Efekt Knobe’a powstaje, gdy badany ma ocenić użycie dowolnego modyfikatora, przypisując winę (i zasługę) sprawcy moralnie nacechowanego efektu ubocznego.

Zgodnie z dotychczasową interpretacją wyników badań (min. Petit & Knobe 2009, Tannenbaum i in. 2009, Alicke 2000, Cushman i in. 2008, por. też Knobe 2010) EK jest zjawiskiem bardzo szerokim. Żeby to sprawdzić, najpierw przetestowaliśmy H’, sprawdzając minimalne warunki, w których mógłby pojawić się EK. Sprawdziliśmy, co dzieje się, gdy zadajemy pytanie o samo działanie niemodyfikowane żadnym określeniem. Jeżeli efekt Knobe’a nie zostanie zaobserwowany, będzie to oznaczało, że modyfikatory pełnią tu istotną rolę. Wtedy zostanie sprawdzona H”.

Badanie kontrolne

Testowanie H’ polegało na replikacji oryginalnego badania Knobe’a, zamiast jednak pytać, „Czy dyrektor specjalnie zaszkodził/pomógł środowisku?”, osoby badane dostały pytanie bez żadnego modyfikatora (tzn. „Czy dyrektor zaszkodził/pomógł środowisku?”).

Badani losowali jedną z dwóch historyjek, a następnie odpowiadali na dwa pytania. Historyjki różniły się wartościowaniem czynu dyrektora: w jednej z nich czyn dyrektora szkodził środowisku (warunek HARM), w drugiej pomagał środowisku (warunek HELP). Do badania wykorzystano przedstawione wyżej tłumaczenie na język polski oryginalnych historyjek używanych przez Knobe’a.

Po odpowiedzi na to pytanie „Czy dyrektor zaszkodził/pomógł środowisku?” badani byli poproszeni o zaznaczenie na pięciostopniowej skali, w jak dużym stopniu dyrektor ponosi winę (lub zasługę) za to, co się stało.

Badanie główne

Badanie hipotezy H’’ różniło się od badania H’ pytaniami, które otrzymywali badani. Otóż, pomaganie lub szkodzenie dyrektora było modyfikowane przysłówkami „katrybilnie”, „endemicznie”, „pastewnie”:

  • Czy dyrektor katrybilnie pomógł środowisku? (gdzie za wyraz “katrybilnie” mógł być podstawiony każdy z trzech przysłówków)

Po tym pytaniu znowu należało ocenić stopień winy lub zasługi dyrektora.

W badaniu są trzy zmienne: wartość moralna czynu dyrektora (a dokładniej efektu ubocznego jego działania), uznanie czynu dyrektora za jakieś (w zależności od scenariusza), poziom odpowiedzialności dyrektora. Jedyną zmienną niezależną jest wartość moralna czynu dyrektora - była ona manipulowana przez losowanie scenariuszy.

Procedura badawcza

Badanie zostało przeprowadzone przez internet, za pomocą platformy internetowej „Limesurvey”. Badanymi byli ochotnicy zebrani głównie za pomocą internetowych serwisów komunikacyjnych. Od strony technicznej oba badania wyglądały tak samo. Pierwszą rzeczą, którą widział uczestnik, był ekran powitalny krótko opisujący, czego dotyczy badanie. Po kliknięciu na odpowiedni link wyświetlał się ekran z instrukcjami. Następnie, należało kliknąć w kolejny link, co zaczynało właściwe badanie. Na ekranie pojawiała się historyjka z pozytywnym lub negatywnym efektem ubocznym czynu dyrektora. Wersja historyjki była dobierana losowo, a badany nie był świadomy istnienia innych wersji. To samo dotyczyło modyfikatorów, z którymi stykał się uczestnik. Pod historyjką widoczne było opisane pytanie. Po zaznaczeniu odpowiedzi na ekranie pojawiało się pytanie dotyczące poziomu winy/zasługi, jaką należałoby przypisać dyrektorowi. Pod pytaniem widoczna była skala z opisanymi stopniami. Dodatkowo, w badaniu głównym znajdował się niewidoczny dla uczestników licznik czasu, który zaczynał liczenie, kiedy badany zmieniał okno przeglądarki na jakiekolwiek inne. Był to sposób kontrolowania tego, czy uczestnik próbuje sprawdzać sens nieznanych mu przysłówków. Po udzieleniu odpowiedzi na to pytanie uczestnik proszony był o wypełnienie krótkiego kwestionariusza osobowego. Z badania można było zrezygnować w dowolnym momencie. Czas trwania badania rzadko bywał dłuższy niż kilka minut.

Wyniki

In [21]:
#Wyłączam ostrzeżenia dla ładniejszych wyników
import warnings
warnings.filterwarnings('ignore')

import pandas as pd
import numpy as np
import seaborn as sns
from pandas import DataFrame,Series
import scipy.stats
import statsmodels.sandbox.stats.multicomp as multicomp
from scipy.stats import kruskal
from scipy.stats import wilcoxon
from scipy.stats import mannwhitneyu
from scipy.stats import ranksums
import warnings
import colormaps as cmaps
import matplotlib.pyplot as plt
plt.register_cmap(name='viridis', cmap=cmaps.viridis)
plt.set_cmap(cmaps.viridis)
%matplotlib inline
In [39]:
data = pd.read_csv('cleanDataJanek169464.csv')#.dropna(thresh=12)
data_c = pd.read_csv('cleanData28553.csv').dropna(thresh=13)
data_c = data_c[data_c['Modyfikator'] == 'Brak przysłówka']
data = pd.concat([data, data_c])

Tabela wyników (liczba wystąpień)

In [40]:
#Krzyżowa tabela wyników
img_mod_x_table = pd.crosstab(data['Modyfikator'], [data['Grupa'],data['Odpowiedź']])
img_mod_x_table
Out[40]:
Grupa Harm Help
Odpowiedź Nie Tak Nie Tak
Modyfikator
Brak przysłówka 4 58 16 56
Endemicznie 15 53 16 44
Katrybilnie 11 43 18 42
Pastewnie 10 42 30 48

Tabela wyników (procentowo)

In [41]:
#Procentowa tabela wyników
img_mod_x_table_percent = img_mod_x_table.apply(lambda r: r/r.sum(level = 'Grupa'), axis=1)
img_mod_x_table_percent.round(3) * 100
Out[41]:
Harm Help
Nie Tak Nie Tak
Modyfikator
Brak przysłówka 6.5 93.5 22.2 77.8
Endemicznie 22.1 77.9 26.7 73.3
Katrybilnie 20.4 79.6 30.0 70.0
Pastewnie 19.2 80.8 38.5 61.5

χ 2 i wartość p

In [42]:
#Kod liczący statystykę Chi i p-value dla każdej pary Harm/Help
gb = img_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]
        img_mod_x_table['Chi^2'] = Series(chisq)
        img_mod_x_table['P-value'] = Series(pvalue)
img_mod_x_table
Out[42]:
Grupa Harm Help Chi^2 P-value
Odpowiedź Nie Tak Nie Tak
Modyfikator
Brak przysłówka 4 58 16 56 5.342255 0.020815
Endemicznie 15 53 16 44 0.160420 0.688770
Katrybilnie 11 43 18 42 0.928161 0.335341
Pastewnie 10 42 30 48 4.551505 0.032890
In [43]:
#Rysowanie wykresu
df_percent = DataFrame(img_mod_x_table_percent.unstack()).reset_index().rename(columns={0:'Freq'})
# df_percent = df_percent[df_percent['RESPONSE'] != 'Nie']
s = sns.factorplot(y='Freq', x='Odpowiedź', data=df_percent, kind='bar', col = 'Modyfikator', row = 'Grupa', 
                   size = 4, aspect=1, sharex=True)
s.set_titles('{col_name}');
s.fig.subplots_adjust(wspace=.02, hspace=1)
s.fig.text(-0.05, 0.80,'Warunek \n  HARM', fontsize=20, rotation=90)
s.fig.text(-0.05, 0.30,'Warunek \n   HELP', fontsize=20, rotation=90);

for ax in s.axes[0]:
    ax.set_title(ax.get_title() + 
                 '\n Tak: {x}%,\n Nie: {y}%'.format(x = round(float(df_percent.query('Modyfikator == "{z}" and Odpowiedź == "Tak" and Grupa == "Harm"'.format(z=ax.get_title())).Freq*100), 1),
                                               y = round(float(df_percent.query('Modyfikator == "{z}" and Odpowiedź == "Nie" and Grupa == "Harm"'.format(z=ax.get_title())).Freq *100), 1)))
    
for ax in s.axes[1]:
    ax.set_title(ax.get_title() + 
                 '\n Tak: {x}%,\n Nie: {y}%'.format(x = round(float(df_percent.query('Modyfikator == "{z}" and Odpowiedź == "Tak" and Grupa == "Help"'.format(z=ax.get_title())).Freq*100), 1),
                                               y = round(float(df_percent.query('Modyfikator == "{z}" and Odpowiedź == "Nie" and Grupa == "Help"'.format(z=ax.get_title())).Freq *100), 1)))

s.fig.text(0.14, 0.56,'χ²: '+ str(chisquaretests['Brak przysłówka'][0].round(4)) 
           + '\n' + 'p:  ' + str(chisquaretests['Brak przysłówka'][1].round(6)), fontsize=17);

s.fig.text(0.36, 0.56,'χ²: '+ str(chisquaretests['Endemicznie'][0].round(4)) 
           + '\n' + 'p:  ' + str(chisquaretests['Endemicznie'][1].round(6)), fontsize=17);

s.fig.text(0.58, 0.56,'χ²: '+ str(chisquaretests['Katrybilnie'][0].round(4)) 
           + '\n' + 'p:  ' + str(chisquaretests['Katrybilnie'][1].round(6)), fontsize=17);

s.fig.text(0.80, 0.56,'χ²: '+ str(chisquaretests['Pastewnie'][0].round(4)) 
           + '\n' + 'p:  ' + str(chisquaretests['Pastewnie'][1].round(6)), fontsize=17);

Komentarz

Pierwsze, co rzuca się w oczy przy próbie analizy wyników, to nieostrość pojęcia “efekt Knobe’a”. Można wyróżnić przynajmniej trzy sytuacje, w których możemy o nim mówić:

Słaby EK: jest istotna statystycznie różnica między warunkami HARM i HELP.

Średni EK: poza istotną różnicą proporcje odpowiedzi w obu warunkach przekraczają pewien arbitralny próg (np. HELP “Tak”: 20%, HARM “Tak”: 50%)

Mocny EK: proporcje wyników są takie, jak zaobserwowane przez Knobe’a, i jest widoczna istotna statystycznie różnica między warunkami.


Pierwsza interpretacja jest obarczona dwiema wadami. Po pierwsze arbitralnie ustanawiamy, co rozumiemy przez wystąpienie EK, po drugie nie bardzo wiadomo, jakie wartości mają oznaczać rzeczywiście istotne różnice (dlaczego akurat p=0,01 ma oznaczać odpowiednią istotność?).

Druga interpretacja nie różni się wiele od pierwszej. Istotność różnicy można interpretować w ten sposób: niezależnie od zaobserwowanej proporcji, przynajmniej część odpowiedzi jest różna. Tzn. jest duża szansa, że przynajmniej dla części ludzi oczywistą odpowiedzią w jednym warunku będzie „Tak”, a w drugim „Nie”. W związku z tym ustanawianie arbitralnego progu niewiele zmienia, choć np. jeżeli w jednym z warunków odpowiedzi rozkładają się mniej więcej po równo na „Tak” i na „Nie”, pozwala to przypuszczać, że badani nie byli pewni swojej odpowiedzi. Interpretacja mocna jest lepsza od dwóch pozostałych przede wszystkim dlatego, że tak, ze statystycznego punktu wudzenia, wyglądał oryginalny efekt Knobe’a. Uzyskanie takich wyników jest mocnym potwierdzeniem znaleznienia tego właśnie efektu. Jednak zbytnie przywiązywanie się do niej sprawi, że odrzucimy wiele interesujących wyników. Każda z tych interpretacji jest mniej lub bardziej arbitralna. Pytanie zawsze dotyczy tego samego: w jaki sposób mierzyć z gruntu jednostkowe doświadczenia przez pryzmat deklaracji grupy?

Jeżeli uznać, że w wynikach badania kontrolnego udaje się zaobserwować EK, to jedynie w najsłabszym z sensów wymienionych powyżej. W badaniu głównym w wypadku przysłówków „katrybilnie” i „endemicznie” nie widać EK nawet w jego słabej wersji. Inaczej jest w wypadku „pastewnie” – nie tylko widać istotną różnicę między warunkami, można też uznać, że te wyniki spełniają kryteria dla EK w wersji średniej.

Dodatkowo, analizując uzyskane wyniki, można dostrzec interesującą tendencję. Wśród czterech uzyskanych pomiarów łatwo wyróżnić trzy grupy:

  • brak modyfikatora.
  • endemicznie i katrybilnie.
  • pastewnie.

Porównajmy procentowe ilości odpowiedzi „Tak” w warunku HELP między tymi grupami. Proporcjonalnie najwięcej odpowiedzi „Tak” zostało udzielonych w grupie (A), ich liczba spada w grupie (B), żeby osiągnąć minimum w wypadku przysłówka „pastewnie”. Można interpretować w ten sposób, że akt przypisania winy wraz z specyficzną sytuacją (nacechowanym moralnie efektem ubocznym) stwarzają dogodne warunki do wystąpienia słabego EK, natomiast przyłączenie odpowiedniego (tzn. specjalnie, celowo, etc.) modyfikatora sprawia, że EK objawia się w pełnej krasie. Przyłączenie niewłaściwego (np. sztucznych jak tutaj) modyfikatora sprawia, że efekt nie jest widoczny.

Uzyskane wyniki wskazują w zgodzie z poprzednimi eksperymentami wskazują, że EK jest niezależny od użytego modyfikatora (pojęcia). Użycie sztucznych modyfikatorów potwierdza przypuszczenie, że EK jest raczej wywoływany przez odpowiedni modyfikator konkretnego wyrażenia, połączony z informacjami o kontekście, z jakim nadawca/odbiorca ma do czynienia. Najważniejsze wnioski płynące z uzyskanych wyników są następujące: modyfikatory pełnią istotną rolę w efekcie Knobe’a. Sam akt przypisania winy wraz z nacechowanym moralnie efektem ubocznym działania nie są wystarczające do zaobserwowania efektu Knobe’a.

Bibliografia

Alicke, M. (2000) Culpable control and the psychology of blame. Psychological Bulletin 126:556–74.

Beebe, J. R., Buckwalter, W. (2010). The epistemic side‐effect effect. Mind & Language, 25(4), 474-498.

Cushman, F., Knobe, J. & Sinnott-Armstrong, W. (2008) Moral appraisals affect doing/allowing judgments. Cognition 108:353–80.

Knobe, J. (2003). Intentional action and side effects in ordinary language. Analysis, 63(279), 190-194.

Knobe, J. (2010). Person as scientist, person as moralist. Behavioral and Brain Sciences, 33(04), 315-329.

Paprzycka K. (2015). The Omissions Account of the Knobe Effect and the Asymmetry Challenge. Mind & Language, 30(5), 550–571.

Pettit, D. & Knobe, J. (2009) The pervasive impact of moral judgment. Mind and Language 24:586–604.

Appendix: Przypisywanie odpowiedzialności

Sprawdziliśmy czy zachodzą istotne statystycznie różnice w rozkładzie przypisywanej odpowiedzialności w zalezności od użytego przysłówka. Test Kruskala-Wallisa nie pokazał istotnych różnic statystycznych, zarówno dla warunku Harm i Help (Harm: p = {{str(round(harm_kruskal[1], 3))}}, Help: p = {{str(round(help_kruskal[1], 3))}}). Również testy post-hoc parami, które wykonaliśmy mimo to, nie pokazały żadnych istotnych różnic.

In [44]:
resp_img_mod_x_table = pd.crosstab(data['Modyfikator'], [data['Grupa'],data['Odpowiedzialność'].replace({5:'Niewinny / Nie jest jego zasługą',
                                        4:'Raczej niewinny / Raczej nie jest jego zasługą',
                                        3:'Trudno powiedzieć', 
                                        2:'Raczej winny / Raczej jest jego zasługą',
                                        1:'Winny / Jest jego zasługą'})])
                                                       
resp_img_mod_x_table = resp_img_mod_x_table[[('Harm', 'Niewinny / Nie jest jego zasługą'),('Harm', 'Raczej niewinny / Raczej nie jest jego zasługą'),
('Harm', 'Trudno powiedzieć'), ('Harm', 'Raczej winny / Raczej jest jego zasługą'), ('Harm', 'Winny / Jest jego zasługą'),
                     ('Help', 'Niewinny / Nie jest jego zasługą'),('Help', 'Raczej niewinny / Raczej nie jest jego zasługą'),
('Help', 'Trudno powiedzieć'), ('Help', 'Raczej winny / Raczej jest jego zasługą'), ('Help', 'Winny / Jest jego zasługą')]]
    
resp_img_mod_x_table_percent = resp_img_mod_x_table.apply(lambda r: r/r.sum(level = 'Grupa'), axis=1)

Tabela wyników dla odpowiedzialności (liczba wystąpień)

In [45]:
resp_img_mod_x_table
Out[45]:
Grupa Harm Help
Odpowiedzialność Niewinny / Nie jest jego zasługą Raczej niewinny / Raczej nie jest jego zasługą Trudno powiedzieć Raczej winny / Raczej jest jego zasługą Winny / Jest jego zasługą Niewinny / Nie jest jego zasługą Raczej niewinny / Raczej nie jest jego zasługą Trudno powiedzieć Raczej winny / Raczej jest jego zasługą Winny / Jest jego zasługą
Modyfikator
Brak przysłówka 0 1 2 12 47 18 19 10 18 7
Endemicznie 0 1 2 7 54 21 14 6 9 10
Katrybilnie 1 0 2 7 43 20 16 5 9 8
Pastewnie 1 1 2 10 36 20 23 11 12 9

Tabela wyników dla odpowiedzialności (procentowa)

In [46]:
resp_img_mod_x_table_percent.round(3)*100
Out[46]:
Harm Help
Niewinny / Nie jest jego zasługą Raczej niewinny / Raczej nie jest jego zasługą Trudno powiedzieć Raczej winny / Raczej jest jego zasługą Winny / Jest jego zasługą Niewinny / Nie jest jego zasługą Raczej niewinny / Raczej nie jest jego zasługą Trudno powiedzieć Raczej winny / Raczej jest jego zasługą Winny / Jest jego zasługą
Modyfikator
Brak przysłówka 0.0 1.6 3.2 19.4 75.8 25.0 26.4 13.9 25.0 9.7
Endemicznie 0.0 1.6 3.1 10.9 84.4 35.0 23.3 10.0 15.0 16.7
Katrybilnie 1.9 0.0 3.8 13.2 81.1 34.5 27.6 8.6 15.5 13.8
Pastewnie 2.0 2.0 4.0 20.0 72.0 26.7 30.7 14.7 16.0 12.0
In [47]:
sns.set_context("poster")
sns.set_palette("Reds")
order = ['Niewinny / Nie jest jego zasługą',
         'Raczej niewinny / Raczej nie jest jego zasługą',
         'Trudno powiedzieć', 
         'Raczej winny / Raczej jest jego zasługą',
         'Winny / Jest jego zasługą']
df_percent = DataFrame(resp_img_mod_x_table_percent.unstack()).reset_index().rename(columns={0:'Freq'})
df_percent['Odpowiedzialność']
s = sns.factorplot(x='Modyfikator', y='Freq', hue='Odpowiedzialność', data=df_percent, row='Grupa', kind='bar', size=4, aspect=3, hue_order=order)
plt.set_cmap(cmaps.viridis)
In [48]:
gb = data.dropna(subset = ['Odpowiedzialność'], thresh=1).groupby('Grupa')
gbgb = gb.get_group('Harm').groupby('Modyfikator')
kruskal_lista = []
for name, group in gbgb:
    kruskal_lista.append(group['Odpowiedzialność'])
harm_kruskal = kruskal(kruskal_lista[0], kruskal_lista[1], kruskal_lista[2], kruskal_lista[3])

gbgb = gb.get_group('Help').groupby('Modyfikator')
kruskal_lista = []
for name, group in gbgb:
    kruskal_lista.append(group['Odpowiedzialność'])
help_kruskal = kruskal(kruskal_lista[0], kruskal_lista[1], kruskal_lista[2], kruskal_lista[3])
In [49]:
mc_harm = multicomp.MultiComparison(gb.get_group('Harm')['Odpowiedzialność'], gb.get_group('Harm')['Modyfikator'])
mc_help = multicomp.MultiComparison(gb.get_group('Help')['Odpowiedzialność'], gb.get_group('Help')['Modyfikator'])
kruskal_harm_table = mc_harm.allpairtest(kruskal, method='fdr_bh')[0]
ranksums__harm_table = mc_harm.allpairtest(ranksums, method='fdr_bh')[0]
mannwhitney_harm_table = mc_harm.allpairtest(mannwhitneyu, method='fdr_bh')[0]
kruskal_help_table = mc_help.allpairtest(kruskal, method='fdr_bh')[0]
ranksums__help_table = mc_help.allpairtest(ranksums, method='fdr_bh')[0]
mannwhitney_help_table = mc_help.allpairtest(mannwhitneyu, method='fdr_bh')[0]
In [50]:
kruskal_harm_table
Out[50]:
Test Multiple Comparison kruskal FWER=0.05 method=fdr_bh alphacSidak=0.01, alphacBonf=0.008
group1 group2 stat pval pval_corr reject
Brak przysłówka Endemicznie 1.3059 0.2531 0.5623 False
Brak przysłówka Katrybilnie 0.3855 0.5347 0.6425 False
Brak przysłówka Pastewnie 0.2826 0.595 0.6425 False
Endemicznie Katrybilnie 0.2156 0.6425 0.6425 False
Endemicznie Pastewnie 2.5462 0.1106 0.5623 False
Katrybilnie Pastewnie 1.1616 0.2811 0.5623 False
In [51]:
ranksums__harm_table
Out[51]:
Test Multiple Comparison ranksums FWER=0.05 method=fdr_bh alphacSidak=0.01, alphacBonf=0.008
group1 group2 stat pval pval_corr reject
Brak przysłówka Endemicznie 0.793 0.4278 0.7612 False
Brak przysłówka Katrybilnie 0.4461 0.6556 0.7612 False
Brak przysłówka Pastewnie -0.4068 0.6842 0.7612 False
Endemicznie Katrybilnie -0.3039 0.7612 0.7612 False
Endemicznie Pastewnie -1.1335 0.257 0.7612 False
Katrybilnie Pastewnie -0.7951 0.4265 0.7612 False
In [52]:
mannwhitney_harm_table
Out[52]:
Test Multiple Comparison mannwhitneyu FWER=0.05 method=fdr_bh alphacSidak=0.01, alphacBonf=0.008
group1 group2 stat pval pval_corr reject
Brak przysłówka Endemicznie 2146.5 0.2546 0.5663 False
Brak przysłówka Katrybilnie 1722.5 0.5373 0.6455 False
Brak przysłówka Pastewnie 1480.5 0.5976 0.6455 False
Endemicznie Katrybilnie 1640.5 0.6455 0.6455 False
Endemicznie Pastewnie 1401.5 0.1115 0.5663 False
Katrybilnie Pastewnie 1204.5 0.2831 0.5663 False
In [53]:
kruskal_help_table
Out[53]:
Test Multiple Comparison kruskal FWER=0.05 method=fdr_bh alphacSidak=0.01, alphacBonf=0.008
group1 group2 stat pval pval_corr reject
Brak przysłówka Endemicznie 0.4641 0.4957 0.8128 False
Brak przysłówka Katrybilnie 0.9866 0.3206 0.8128 False
Brak przysłówka Pastewnie 0.2977 0.5853 0.8128 False
Endemicznie Katrybilnie 0.0561 0.8128 0.8128 False
Endemicznie Pastewnie 0.0825 0.7739 0.8128 False
Katrybilnie Pastewnie 0.3395 0.5601 0.8128 False
In [54]:
ranksums__help_table
Out[54]:
Test Multiple Comparison ranksums FWER=0.05 method=fdr_bh alphacSidak=0.01, alphacBonf=0.008
group1 group2 stat pval pval_corr reject
Brak przysłówka Endemicznie -0.6627 0.5075 0.819 False
Brak przysłówka Katrybilnie -0.9648 0.3346 0.819 False
Brak przysłówka Pastewnie -0.5309 0.5955 0.819 False
Endemicznie Katrybilnie -0.2288 0.819 0.819 False
Endemicznie Pastewnie 0.279 0.7803 0.819 False
Katrybilnie Pastewnie 0.5649 0.5721 0.819 False
In [55]:
mannwhitney_help_table
Out[55]:
Test Multiple Comparison mannwhitneyu FWER=0.05 method=fdr_bh alphacSidak=0.01, alphacBonf=0.008
group1 group2 stat pval pval_corr reject
Brak przysłówka Endemicznie 2015.0 0.4972 0.815 False
Brak przysłówka Katrybilnie 1882.0 0.3218 0.815 False
Brak przysłówka Pastewnie 2563.0 0.5867 0.815 False
Endemicznie Katrybilnie 1697.5 0.815 0.815 False
Endemicznie Pastewnie 2313.0 0.7756 0.815 False
Katrybilnie Pastewnie 2299.5 0.5617 0.815 False
In [ ]: