Psych 45: N-back stats

In [1]:
%matplotlib inline

import pandas as pd
import seaborn as sns
sns.set(style='ticks', context='poster', font_scale=1.5)

Import data file

In [2]:
data = pd.read_csv('http://web.stanford.edu/class/psych45/demos/Psych45-nback_stats.csv')

# filter RT column so just a number (ms and comma not included)
data.avg_rt = data.avg_rt.str.strip(' ms').str.replace(',', '').astype(float)

data.percent_correct = data.percent_correct.astype(float)
data.combined = data.combined.str.replace(',', '').astype(float)

# task_list = ['2-back', '3-back', '4-back', '5-back', '6-back', '7-back', '8-back']
task_list = ['2-back', '3-back', '4-back', '5-back']
task_list_subset = ['2-back', '3-back', '4-back']
In [3]:
data.head()
Out[3]:
task percent_correct avg_rt combined when date_downloaded
0 2-back 73.33 933.93 1273.55 49 minutes ago 1:14:00 PM, Monday
1 2-back 85.71 588.07 686.08 52 minutes ago 1:14:00 PM, Monday
2 2-back 100.00 791.93 791.93 1 hour ago 1:14:00 PM, Monday
3 2-back 73.33 514.87 702.09 1 hour ago 1:14:00 PM, Monday
4 2-back 100.00 795.20 795.20 2 hours ago 1:14:00 PM, Monday

Analyses

Number of data points:

In [4]:
data.groupby(['task']).count().when
Out[4]:
task
2-back    141
3-back     95
4-back     41
5-back      3
Name: when, dtype: int64

Mean accuracy and response time:

In [5]:
data.groupby(['task']).mean().reset_index()
Out[5]:
task percent_correct avg_rt combined
0 2-back 72.395532 874.722128 1389.751631
1 3-back 56.413474 1002.400316 2077.741053
2 4-back 50.913171 977.564146 2410.440000
3 5-back 46.276667 881.930000 1914.103333

How does task affect percent of trials correct?

In [6]:
g = sns.catplot(x='task', y='percent_correct', 
                   order=task_list,
                   data=data, 
                   kind = "point",
                   ci=95, 
                   aspect=2.3,
                   palette=sns.color_palette("Blues_r", 
                                             n_colors=len(task_list)))
g.set_xlabels('')
g.set_ylabels('% correct')
g.set_xticklabels(rotation=30)
sns.despine(trim=True)
In [7]:
# g = sns.factorplot(x='task', y='percent_correct', 
#                    order=task_list_subset,
#                    data=data, 
#                    palette=sns.color_palette("Blues_r", 
#                                              n_colors=len(task_list_subset)), 
#                    ci=95, 
#                    aspect=1.3)
# g.set_ylabels('% correct')
# g.set_xlabels('')
# g.set_xticklabels(rotation=30)
# sns.despine(trim=True)


g = sns.catplot(x='task', y='percent_correct', 
                   order=task_list_subset,
                   data=data, 
                kind = "point",
                   palette=sns.color_palette("Blues_r", 
                                             n_colors=len(task_list_subset)), 
                   ci=95, 
                   aspect=1.3)
g.set_ylabels('% correct')
g.set_xlabels('')
g.set_xticklabels(rotation=30)
sns.despine(trim=True)

How does task affect average response time on correct trials?

In [8]:
# g = sns.factorplot(x='task', y='avg_rt', 
#                    order=task_list,
#                    data=data, 
#                    palette=sns.color_palette("Blues_r", 
#                                              n_colors=len(task_list)), 
#                    ci=95, 
#                    aspect=2.3)
# g.set_ylabels('avg RT (ms)')
# g.set_xlabels('')
# g.set_xticklabels(rotation=30)
# sns.despine(trim=True)


g = sns.catplot(x='task', y='avg_rt', 
                   order=task_list,
                   data=data,
                   kind = "point",
                   palette=sns.color_palette("Blues_r", 
                                             n_colors=len(task_list)), 
                   ci=95, 
                   aspect=2.3)
g.set_ylabels('avg RT (ms)')
g.set_xlabels('')
g.set_xticklabels(rotation=30)
sns.despine(trim=True)
In [9]:
g = sns.catplot(x='task', y='avg_rt', 
                   order=task_list_subset,
                   data=data, 
                kind = "point",
                   palette=sns.color_palette("Blues_r", 
                                             n_colors=len(task_list_subset)), 
                   ci=95, 
                   aspect=1.3)
g.set_ylabels('avg RT (ms)')
g.set_xlabels('')
g.set_xticklabels(rotation=30)
sns.despine(trim=True)

What about combined (correct and incorrect trials) RT?

In [10]:
g = sns.catplot(x='task', y='combined', 
                   order=task_list,
                   data=data, 
                   kind = "point",
                   palette=sns.color_palette("Blues_r", 
                                             n_colors=len(task_list)), 
                   ci=95, 
                   aspect=2.3)
g.set_ylabels('combined RT (ms)')
g.set_xlabels('')
g.set_xticklabels(rotation=30)
sns.despine(trim=True)
In [ ]:
 
In [ ]: