Experiment Report

Out[7]:

This report presents the analysis for ASAP2: Using simple features to score Dataset 2 from the ASAP essay scoring contest. The features are inspired by (Attali & Burstein, 2016). The train and test feature files can be downloaded from here and the RSMTool experiment configuration file from here. We have simulated the L1 (native language) variable for the data in a non-random fashion (the GRAMMAR feature is contrived to be lower for test-takers with Hindi as their L1). We did so in order for the tool to generate plots similar to those that would be seen for real sub-groups differences.

Out[9]:
Thu Jan 9 16:07:01 2020

Overall descriptive feature statistics

These values are reported before transformations.

Out[13]:
mean std. dev. min max skewness kurtosis Correlation p N
DISCOURSE 5.265 0.570 2.918 6.825 -0.457 4.195 0.609 0.000 1206
GRAMMAR -0.109 0.033 -0.285 -0.042 -0.995 5.092 0.306 0.000 1206
MECHANICS -0.175 0.075 -0.492 0.000 -0.688 3.837 0.504 0.000 1206
STYLE -0.201 0.146 -0.753 0.000 -0.212 2.533 0.525 0.000 1206
USAGE -0.095 0.046 -0.312 0.000 -0.042 3.508 0.267 0.000 1206
VOCABULARY 4.451 0.453 3.241 17.120 18.083 506.950 0.152 0.000 1206

Prevalence of recoded cases

This sections shows the number and percentage of cases truncated to mean +/- 4 SD for each feature.

Feature value distribution

The following table shows additional statistics for the data. Quantiles are computed using type=3 method used in SAS. The mild outliers are defined as data points between [1.5, 3) * IQR away from the nearest quartile. Extreme outliers are the data points >= 3 * IQR away from the nearest quartile.

Out[15]:
1% 5% 25% 50% 75% 95% 99% IQR Mild outliers Extreme outliers
DISCOURSE 3.597 4.277 4.970 5.268 5.598 6.182 6.486 0.629 46 1
GRAMMAR -0.210 -0.167 -0.126 -0.105 -0.085 -0.061 -0.051 0.041 26 6
MECHANICS -0.387 -0.309 -0.220 -0.167 -0.122 -0.070 -0.046 0.098 20 0
STYLE -0.537 -0.437 -0.303 -0.207 -0.052 0.000 0.000 0.251 3 0
USAGE -0.210 -0.171 -0.123 -0.094 -0.068 0.000 0.000 0.054 18 1
VOCABULARY 3.792 3.991 4.278 4.452 4.615 4.872 5.047 0.337 14 2

Feature values by L1

In all plots in this subsection the values are reported before transformations/truncation. The lines indicate the threshold for truncation (mean +/- 4*SD).

Differential feature functioning

This section shows differential feature functioning (DFF) plots for all features and subgroups. The features are shown after applying transformations (if applicable) and truncation of outliers.

DFF by L1

Feature distributions and inter-feature correlations

Training set distributions

The following plot shows the distributions of the feature values in the training set, after transformation (if applicable), truncation and standardization (if applicable). The line shows the kernel density estimate. The human score (sc1) is also included.

Response length (length) is included if you specified length_column in the config file, unless the column had missing values or a standard deviation <= 0.

Inter-feature correlations

The following table shows the Pearson correlations between all the training features after transformation (if applicable), truncation and standardization (if applicable). The human score (sc1) is also included.

Response length (length) is included if you specified length_column in the config file, unless the column had missing values or a standard deviation <= 0.

The following values are highlighted:

  • inter-feature correlations above 0.7, and
  • sc1-feature correlations lower than 0.1 or higher than 0.7
Out[21]:
sc1 length DISCOURSE GRAMMAR MECHANICS STYLE USAGE VOCABULARY
sc1 1.000 0.649 0.609 0.303 0.504 0.525 0.266 0.312
length 0.649 1.000 0.814 0.212 0.387 0.611 0.114 0.066
DISCOURSE 0.609 0.814 1.000 0.195 0.372 0.557 0.105 0.047
GRAMMAR 0.303 0.212 0.195 1.000 0.383 0.206 0.312 0.160
MECHANICS 0.504 0.387 0.372 0.383 1.000 0.309 0.365 0.353
STYLE 0.525 0.611 0.557 0.206 0.309 1.000 0.124 0.179
USAGE 0.266 0.114 0.105 0.312 0.365 0.124 1.000 0.232
VOCABULARY 0.312 0.066 0.047 0.160 0.353 0.179 0.232 1.000

Marginal and partial correlations

The plot below shows correlations between truncated and standardized (if applicable) values of each feature against human score. The first bar (Marginal) in each case shows Pearson's correlation. The second bar (Partial - all) shows partial correlations after controlling for all other variables. If you specified length_column in the config file, a third bar (Partial - length) will show partial correlations of each feature against the human score after controlling for length. The dotted lines correspond to r = 0.1 and r = 0.7.

The plot below shows the same correlations between truncated and standardized values of each feature against length.

Description of the data

Responses excluded due to non-numeric feature values or scores

Training set

Total number of excluded responses: 0 (0.0% of the original 1206)

Evaluation set

Total number of excluded responses: 0 (0.0% of the original 594)

The rest of this report is based only on the responses that were not excluded above.

Composition of the training and evaluation sets

partition responses L1
Training 1206 3
Evaluation 594 3
Overlapping 0 3
Total 1800 3

Total number of double scored responses in the evaluation set used: 594 (zeros excluded)

Number of responses by L1

L1 Training set Evaluation set
English 600 300
Hindi 206 144
Spanish 400 150

Model

Out[33]:

Model used: LinearRegression

Out[34]:

Number of features in model: 6

Model summary

                            OLS Regression Results                            
==============================================================================
Dep. Variable:                    sc1   R-squared:                       0.530
Model:                            OLS   Adj. R-squared:                  0.528
Method:                 Least Squares   F-statistic:                     225.6
Date:                Thu, 09 Jan 2020   Prob (F-statistic):          9.99e-193
Time:                        16:06:57   Log-Likelihood:                -947.06
No. Observations:                1206   AIC:                             1908.
Df Residuals:                    1199   BIC:                             1944.
Df Model:                           6                                         
Covariance Type:            nonrobust                                         
==============================================================================
                 coef    std err          t      P>|t|      [0.025      0.975]
------------------------------------------------------------------------------
const          3.4063      0.015    222.271      0.000       3.376       3.436
GRAMMAR        0.0498      0.017      2.925      0.004       0.016       0.083
USAGE          0.0578      0.017      3.413      0.001       0.025       0.091
MECHANICS      0.1419      0.019      7.400      0.000       0.104       0.180
STYLE          0.1463      0.019      7.745      0.000       0.109       0.183
DISCOURSE      0.3151      0.019     16.290      0.000       0.277       0.353
VOCABULARY     0.1290      0.017      7.701      0.000       0.096       0.162
==============================================================================
Omnibus:                        9.205   Durbin-Watson:                   2.013
Prob(Omnibus):                  0.010   Jarque-Bera (JB):               12.417
Skew:                          -0.060   Prob(JB):                      0.00201
Kurtosis:                       3.483   Cond. No.                         2.46
==============================================================================

Warnings:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.

Model fit

N responses N features R2 R2_adjusted
1206 6 0.530 0.528

Standardized and relative regression coefficients (betas)

The relative coefficients are intended to show relative contribution of different feature and their primary purpose is to indentify whether one of the features has an unproportionate effect over the final score. They are computed as standardized/(sum of absolute values of standardized coefficients).

Negative standardized coefficients are highlighted.

Note: if the model contains negative coefficients, relative values will not sum up to one and their interpretation is generally questionable.

feature standardized relative
DISCOURSE 0.407 0.375
GRAMMAR 0.064 0.059
MECHANICS 0.183 0.169
STYLE 0.189 0.174
USAGE 0.075 0.069
VOCABULARY 0.167 0.154

Here are the same values, shown graphically.

Model diagnostics

These are standard plots for model diagnostics for the main model. All information is computed based on the training set.

Consistency

Note: this section assumes that the score used for evaluating machine scores is the score assigned by the first rater.

Human-human agreement

This table shows the human-human agreement on the double-scored evaluation data. The following are highlighted :

  • Exact agreement (exact_agr) < 50%
  • Adjacent agreement (adj_agr) < 95%
  • Quadratic weighted kappa (wtkappa) < 0.7
  • Pearson correlation (corr) < 0.7
N h1_mean h1_sd h1_min h1_max h2_mean h2_sd h2_min h2_max corr wtkappa kappa exact_agr adj_agr SMD
594 3.434 0.775 1.000 6.000 3.424 0.776 1.000 6.000 0.795 0.795 0.623 76.431 99.663 -0.013

Degradation

The next table shows the degradation in the evaluation metrics (diff) when comparing the machine (H-M) to a second human (H-H). A positive degradation value indicates better human-machine performance. Note that the human-machine agreement is computed on the full dataset (to get a reliable estimate) whereas the human-human agreement is computed on the subset of responses that were double-scored.

The following degradation values are highlighted

  • corr < -0.1
  • wtkappa < -0.1
corr kappa wtkappa exact_agr adj_agr SMD
raw H-H 0.795 0.623 0.795 76.431 99.663 -0.013
H-M 0.723 0.427 0.684 0.000 95.286 -0.044
diff -0.073 -0.197 -0.111 -76.431 -4.377 -0.031
raw_trim H-H 0.795 0.623 0.795 76.431 99.663 -0.013
H-M 0.723 0.427 0.684 0.000 95.286 -0.044
diff -0.073 -0.197 -0.111 -76.431 -4.377 -0.031
raw_trim_round H-H 0.795 0.623 0.795 76.431 99.663 -0.013
H-M 0.642 0.427 0.631 65.657 98.990 -0.026
diff -0.153 -0.197 -0.164 -10.774 -0.673 -0.013
scale H-H 0.795 0.623 0.795 76.431 99.663 -0.013
H-M 0.723 0.406 0.722 0.000 91.414 -0.047
diff -0.073 -0.217 -0.073 -76.431 -8.249 -0.034
scale_trim H-H 0.795 0.623 0.795 76.431 99.663 -0.013
H-M 0.722 0.409 0.722 0.000 91.414 -0.046
diff -0.073 -0.214 -0.074 -76.431 -8.249 -0.033
scale_trim_round H-H 0.795 0.623 0.795 76.431 99.663 -0.013
H-M 0.672 0.409 0.671 63.131 99.158 -0.030
diff -0.124 -0.214 -0.124 -13.300 -0.505 -0.017

Disattenuated correlations

The next table shows the correlations between human and machine scores, the correlations between two human scores, and disattenuated correlations between human and machine scores computed as human-machine correlations divided by the square root of human-human correlation. Note that the human-machine correlation is computed on the full dataset (to get a reliable estimate) whereas the human-human correlation is computed on the subset of responses that were double-scored.

The following values are highlighted

  • disattenuated_corr < -0.9
corr_HM corr_HH sqrt_HH corr_disattenuated
raw 0.723 0.795 0.892 0.810
raw_trim 0.723 0.795 0.892 0.810
raw_trim_round 0.642 0.795 0.892 0.720
scale 0.723 0.795 0.892 0.810
scale_trim 0.722 0.795 0.892 0.810
scale_trim_round 0.672 0.795 0.892 0.753

Principal component analysis

PCA using scaled data and singular value decomposition. This is computed using processed features after the truncation of outliers and other transformations specified in feature config file.

Out[43]:
PC1 PC2 PC3 PC4 PC5 PC6
DISCOURSE -0.417 -0.567 -0.049 0.130 -0.207 -0.666
GRAMMAR -0.394 0.230 -0.547 -0.641 0.261 -0.115
MECHANICS -0.509 0.140 0.044 -0.049 -0.737 0.416
STYLE -0.428 -0.496 0.161 0.059 0.507 0.533
USAGE -0.358 0.459 -0.276 0.726 0.228 -0.075
VOCABULARY -0.316 0.387 0.771 -0.196 0.190 -0.286
Out[44]:
PC1 PC2 PC3 PC4 PC5 PC6
Cumulative percentage of variance 0.390 0.589 0.732 0.843 0.935 1.000
Eigenvalues 2.337 1.200 0.858 0.666 0.552 0.387
Percentage of variance 0.390 0.200 0.143 0.111 0.092 0.065

Evaluation results

Overall association statistics

The tables in this section show the standard association metrics between observed human scores and different types of machine scores. These results are computed on the evaluation set. raw_trim scores are truncated to [0.5002, 6.4998000000000005]. raw_trim_round scores are computed by first truncating and then rounding the predicted score. Scaled scores are computed by re-scaling the predicted scores using mean and standard deviation of human scores as observed on the training data and mean and standard deviation of machine scores as predicted for the training set.

Descriptive holistic score statistics

The table shows distributional properties of human and system scores. SMD values lower then -0.15 or higher than 0.15 are highlighted.

Please note that for raw scores, SMD values are likely to be affected by possible differences in scale.

Out[48]:
N h_mean sys_mean h_sd sys_sd h_min sys_min h_max sys_max SMD
raw 594 3.434 3.400 0.775 0.558 1.000 1.047 6.000 4.609 -0.044
raw_trim 594 3.434 3.400 0.775 0.558 1.000 1.047 6.000 4.609 -0.044
raw_trim_round 594 3.434 3.414 0.775 0.644 1.000 1.000 6.000 5.000 -0.026
scale 594 3.434 3.398 0.775 0.766 1.000 0.167 6.000 5.058 -0.047
scale_trim 594 3.434 3.399 0.775 0.764 1.000 0.500 6.000 5.058 -0.046
scale_trim_round 594 3.434 3.411 0.775 0.775 1.000 1.000 6.000 5.000 -0.030

Association statistics

Out[49]:

The table shows the standard association metrics between human scores and machine scores. Note that for computation of kappa all machine scores are rounded.

Out[50]:
N corr wtkappa R2 kappa exact_agr adj_agr RMSE
raw 594 0.723 0.684 0.520 0.427 0.000 95.286 0.536
raw_trim 594 0.723 0.684 0.520 0.427 0.000 95.286 0.536
raw_trim_round 594 0.642 0.631 0.376 0.427 65.657 98.990 0.611
scale 594 0.723 0.722 0.449 0.406 0.000 91.414 0.574
scale_trim 594 0.722 0.722 0.451 0.409 0.000 91.414 0.574
scale_trim_round 594 0.672 0.671 0.343 0.409 63.131 99.158 0.628

Confusion matrix

Out[51]:

Confusion matrix using scaled, trimmed, and rounded scores and human scores (rows=system, columns=human).

Out[52]:
1 2 3 4 5 6
1 3 6 0 0 0 0
2 3 31 24 0 0 0
3 2 12 148 65 1 0
4 0 0 72 186 18 2
5 0 0 0 14 7 0
6 0 0 0 0 0 0

Distribution of human and machine scores

The histogram and the table below show the distibution of human scores and scaled, trimmed, and rounded machine scores (as % of all responses). Differences in the table between human and machine distributions larger than 5 percentage points are highlighted.

score human sys_scale difference
1.0 1.346801 1.515152 0.168
2.0 8.249158 9.764310 1.515
3.0 41.077441 38.383838 -2.694
4.0 44.612795 46.801347 2.189
5.0 4.377104 3.535354 -0.842
6.0 0.336700 0.000000 -0.337

Evaluation by L1

True score evaluations

The tables in this section show how well system scores can predict true scores. According to Test theory, a true score is a score that would have been obtained if there were no errors in measurement. While true scores cannot be observed, the variance of true scores and the prediction error can be estimated using observed human scores when multiple human ratings are available for a subset of responses. In this notebook these are estimated using human scores for responses in the evaluation set.

Note that the analyses in this section assume that the values in test_label_column and second_human_score_column are independent scores from different raters or groups of raters. These analyses are not applicable to a situation where test_label_column contains an average score from multiple raters

Variance of human scores

The table below shows variance of both sets of human scores for the whole evaluation set and for the subset of responses that were double-scored. Large differences in variance between the two human scores require further investigation. The last column shows estimated true score variance.

N N_single N_double h1_var_single h1_var_double h2_var_double true_var
human 594 0 594 - 0.600 0.602 0.478

Proportional reduction in mean squared error (PRMSE)

The table shows the variance of system scores for single-scored and double-scored responses, and mean squared error (MSE) and proportional reduction in mean squared error (PRMSE) for predicting a true score with system score. As for other evaluations, these results are computed on the evaluation set. raw_trim scores are truncated to [0.5002, 6.4998000000000005]. raw_trim_round scores are computed by first truncating and then rounding the predicted score. Scaled scores are computed by re-scaling the predicted scores using mean and standard deviation of human scores as observed on the training data and mean and standard deviation of machine scores as predicted for the training set.

N N_single N_double sys_var_single sys_var_double mse_true prmse_true
raw 594 0 594 - 0.311 0.159 0.668
scale 594 0 594 - 0.586 0.199 0.584
raw_trim 594 0 594 - 0.311 0.159 0.668
raw_trim_round 594 0 594 - 0.415 0.239 0.500
scale_trim 594 0 594 - 0.583 0.198 0.586
scale_trim_round 594 0 594 - 0.600 0.253 0.472

Additional fairness analyses

This section presents additional fairness analyses described in detail in Loukina et al. (2019). These analyses consider separately different definitions of fairness and can assist in further trouble-shooting the observed subgroup differences. The evaluations focuses on three dimensions:

  • Outcome fairness measures:

    • Overall score accuracy: whether the automated scores are equally accurate for each group. The metric shows how much of the variance in squared error $(S-H)^2$ is explained by subgroup membership.

    • Overall score difference: whether the automated scores are consistently different from human scores for members of a certain group. The metric shows how much of the variance in actual error $S-H$ is explained by subgroup membership.

The differences in the outcome fairness measures might be due to different mean scores (different score distributions) across subgroups or due to differential treatment of different subgroups by the scoring engine or both.

  • Process fairness measures:

    • Conditional score difference: whether the automated scoring model assigns different scores to members from different groups despite them having the same construct proficiency. The metric shows how much additional variance in actual error ($S-H$) is explained by subgroup membership after controlling for human score, which can be thought of as a reasonable proxy for proficiency.

The differences in process fairness measures indicate differential treatment of different subgroups by the scoring model.

Additional fairness evaluation by L1

The summary table shows the overall score accuracy (OSA), overall score difference (OSD) and conditional score difference (CSD). The first row reports the percentage of variance, explained by group membership, the second row shows $p$ value. English was used as a reference category. Larger values of R2 indicate larger differences between subgroups. Further detail about each model can be found in intermediate output files.

Overall score accuracy Overall score difference Conditional score difference
R2 -0.002 -0.002 0.002
sig 0.629 0.687 0.182

The plots show error estimates for different categories for each group (squared error for OSA, raw error for OSD, and conditional raw error for CSD) The estimates have been adjusted for the value of the group used as the Intercept. Black lines show 95% confidence intervals estimated by the model.

The plot shows average scale_trim system score for each group conditioned on human score.

Click on the hyperlinks below to see the intermediate experiment files generated as part of this experiment.

  • Betas: csv
  • Coefficients: csv
  • Coefficients Scaled: csv
  • Confmatrix: csv
  • Consistency: csv
  • Consistency By L1: csv
  • Cors Orig: csv
  • Cors Processed: csv
  • Data Composition: csv
  • Data Composition By L1: csv
  • Degradation: csv
  • Disattenuated Correlations: csv
  • Disattenuated Correlations By L1: csv
  • Estimates Csd By L1: csv
  • Estimates Osa By L1: csv
  • Estimates Osd By L1: csv
  • Eval: csv
  • Eval By L1: csv
  • Eval Short: csv
  • Fairness Metrics By L1: csv
  • Feature: csv
  • Feature Descriptives: csv
  • Feature Descriptivesextra: csv
  • Feature Outliers: csv
  • Margcor Length All Data: csv
  • Margcor Length By L1: csv
  • Margcor Score All Data: csv
  • Margcor Score By L1: csv
  • Model Fit: csv
  • Pca: csv
  • Pcavar: csv
  • Pcor Length All Data: csv
  • Pcor Length By L1: csv
  • Pcor Score All Data: csv
  • Pcor Score By L1: csv
  • Pcor Score No Length All Data: csv
  • Pcor Score No Length By L1: csv
  • Postprocessing Params: csv
  • Pred Processed: csv
  • Pred Train: csv
  • Score Dist: csv
  • Test Excluded Composition: csv
  • Test Features: csv
  • Test Human Scores: csv
  • Test Metadata: csv
  • Test Other Columns: csv
  • Test Preprocessed Features: csv
  • Train Excluded Composition: csv
  • Train Features: csv
  • Train Metadata: csv
  • Train Other Columns: csv
  • Train Preprocessed Features: csv
  • Train Response Lengths: csv
  • True Score Eval: csv

System information

This report was generated using rsmtool v7.0.0 on a 64bit computer running Mac OS X.

Python packages

alabaster==0.7.12
appnope==0.1.0
attrs==19.3.0
babel==2.8.0
backcall==0.1.0
beautifulsoup4==4.8.2
bleach==3.1.0
certifi==2019.11.28
cffi==1.13.2
chardet==3.0.4
coverage==5.0.2
cryptography==2.8
cycler==0.10.0
decorator==4.4.1
defusedxml==0.6.0
docutils==0.15.2
entrypoints==0.3
et-xmlfile==1.0.1
idna==2.8
imagesize==1.2.0
importlib-metadata==1.3.0
ipykernel==5.1.3
ipython-genutils==0.2.0
ipython==7.11.1
ipywidgets==7.5.1
jdcal==1.4.1
jedi==0.15.2
jinja2==2.10.3
joblib==0.14.1
jsonschema==3.2.0
jupyter-client==5.3.4
jupyter-console==6.0.0
jupyter-core==4.6.1
kiwisolver==1.1.0
markupsafe==1.1.1
matplotlib==3.1.2
mistune==0.8.4
more-itertools==8.0.2
nbconvert==5.6.1
nbformat==5.0.3
nose==1.3.7
notebook==6.0.1
numpy==1.14.6
openpyxl==3.0.1
packaging==20.0
pandas==0.23.4
pandocfilters==1.4.2
parameterized==0.7.1
parso==0.5.2
patsy==0.5.1
pexpect==4.7.0
pickleshare==0.7.5
pip==19.3.1
prettytable==0.7.2
prometheus-client==0.7.1
prompt-toolkit==2.0.10
ptyprocess==0.6.0
pycparser==2.19
pygments==2.5.2
pyopenssl==19.1.0
pyparsing==2.4.6
pyqt5-sip==4.19.18
pyqt5==5.12.3
pyqtwebengine==5.12.1
pyrsistent==0.15.7
pysocks==1.7.1
python-dateutil==2.8.1
pytz==2019.3
pyzmq==18.1.1
qtconsole==4.6.0
requests==2.22.0
rsmtool==7.0.0
ruamel.yaml.clib==0.2.0
ruamel.yaml==0.16.5
scikit-learn==0.19.1
scipy==1.1.0
seaborn==0.9.0
send2trash==1.5.0
setuptools==44.0.0.post20200102
six==1.13.0
skll==1.5.2
snowballstemmer==2.0.0
soupsieve==1.9.4
sphinx-rtd-theme==0.4.3
sphinx==2.3.1
sphinxcontrib-applehelp==1.0.1
sphinxcontrib-devhelp==1.0.1
sphinxcontrib-htmlhelp==1.0.2
sphinxcontrib-jsmath==1.0.1
sphinxcontrib-qthelp==1.0.2
sphinxcontrib-serializinghtml==1.1.3
statsmodels==0.10.2
terminado==0.8.3
testpath==0.4.4
tornado==6.0.3
traitlets==4.3.3
urllib3==1.25.7
wcwidth==0.1.8
webencodings==0.5.1
wheel==0.33.6
widgetsnbextension==3.5.1
xlrd==1.2.0
xlwt==1.3.0
zipp==0.6.0