Skip to content

Scoring & Benchmarking

Henry Mehta edited this page May 6, 2020 · 2 revisions

Scoring

The scoring is done by simple addition. Each response meeting the criteria set for a specific Title (I know this language is awkward but it corresponds to the code) will add 1 to the result. It allows specific questions to be included in multiple Titles. It also allows multiple responses for a specific question to be included in a single Title.

To implement scoring you must provide a scoring json file which specifies the Title, Category and Measures to be used. Where the Category does not correspond to an item_type within the csv file containing the questions, you must also include a column called scoring_category which holds the Category.

Consider this extract from the English_WG_scoring.json.

 {
         "title" : "First Gestures",
         "category" : "gestures_first",
         "measure" : "sometimes;often",
         "order" : 1
     },
     {
         "title" : "Games Gestures",
         "category" : "gestures_games",
         "measure" : "yes",
         "order" : 2
     },
     {
         "title" : "Early Gestures",
         "category" : "gestures_first;gestures_games",
         "measure" : "sometimes;often;yes",
         "order" : 3
     },
     {
         "title" : "Object Gestures",
         "category" : "gestures_objects",
         "measure" : "yes",
         "order" : 4
     },
     {
         "title" : "Adult Gestures",
         "category" : "gestures_adults",
         "measure" : "yes",
         "order" : 5
     },
     {
         "title" : "Parent Gestures",
         "category" : "gestures_parents",
         "measure" : "yes",
         "order" : 6
     },
     {
         "title" : "Later Gestures",
         "category" : "gestures_parents;gestures_adults;gestures_objects",
         "measure" : "yes",
         "order" : 7
     },
     {
         "title" : "Total Gestures",
         "category" : "gestures_parents;gestures_adults;gestures_objects;gestures_first;gestures_games",
         "measure" : "sometimes;often;yes",
         "order" : 8
     }

Within each set of curly brackets ( {} ) is the definition to calculate a single score. Each set contains the 3 fields title, category, measure and order.

order specifies the order they will appear in the data analysis.

title provides the name that will be used for the score - it must be unique for the file.

category is the item_type or scoring_category from the csv file that is to be used. If you want to use more than 1, separate them with a semi-colon (;). An example of using multiple categorys is the last set in the example which is called Total Gestures and uses 5 different categories.

measure is the responses that are acceptable for the score to be incremented. With the example of Total Gestures, any response of sometimes, often or yes against any of the categories will result in the score being incremented by 1.

Amendment

A new, optional, item has been added to the json file. kind specifies the type of summary reporting to be provided. It defaults to count which sums the scores as described above. It can also be list, which will produce a list of responses (this is useful for where the respondent has type in sentences).

Complex Scoring

Perhaps an exaggeration of title, but complex scoring allows different responses to get a different score (rather than simply 1. Should complex scoring be required, we add "scores" to sections where the complex score is to be used and for each measure we specify it's score in a "key", "value" list. For example, if we wanted "understands" to score 1 and "produces" to score 2 in "Total Understood", then the dictionary for that section would look like:

    {
        "title" : "Total Understood",
        "category" : "word",
        "measure" : "understands;produces",
        "order" : 1,
        "scores" : [
             {
                  "key" : "understands",
                  "value" : 1
             },
             {
                  "key" : "produces",
                  "value" : 2
          }
        ]
    },

If the "scores" section is not included, 1 point is applied for every occurrance of items in the "measure" list.

Benchmarking

Benchmarking works through csv files held in cdi_forms>form_data>benchmarking. The csv files held here are specified within instruments.json using the key benchmark followed by the file location, for example: "benchmark" : "cdi_forms/form_data/benchmarking/English_WG_benchmark.csv"

The file structure is as follows: The header row contains: title,percentile,age,raw_score,raw_score_boy,raw_score_girl Each subsequent row contains the values for the particular benchmark, so if you have benchmarks every 5% you will have 20 rows for a single measure. The title must match exactly the scoring title within the scoring json file for this instrument.

If there are NO unisex scores available for a specific measure, raw_score should be set to 9999. If there is only a single measurement for each age category, for example you are showing the average score achieved at this age rather than the percentile, then the percentile value is set to 999.

Examples of the above 2 can be found in English_WG (Phrases) and English_WS (Combining) respectively.

For the developer

There is a field in cdi_forms.instrument_forms called scoring_category. This is used to specify the scoring category. This value is included in the csv data files held in cdi_form_csv. If a scoring_category column is not included, then the item_type is used instead.

A new table has been created in researcher_ui.instrumentscore. This table has a foreign key link to research_ui.instrument and includes title, category and measure fields. The title is the string that will show in the downloaded data file, the category is a semi-colon delimited list of categories (as specified in cdi_forms.instrument_forms.scoring_category and measure is a semi-colon delimited list of answers that will be used to increment the score.

researcher_ui.instrumentscore is populated by running manage.py populate_scoring. This program reads json files found in cdi_forms.scoring directory. The json file contains the title, category and measure for each score to be created. In order to associate the correct json file with the correct instrument, the field scoring_json in instruments.json specifies the path to the scoring mechanism to use for each instrument.