UiL-OTS-labs / jspsych-spr-mw

A self paced reading with moving window experiment using jsPsych
GNU General Public License v2.0
6 stars 3 forks source link

kolommen met surveygegevens #16

Closed irisopgithub closed 2 years ago

irisopgithub commented 2 years ago

Het SPR-experiment heeft kolommen voor de survey gegevens:

birth_year birth_month native_language Multilingual Dyslexic Sex HandPreference

De bruikbaarheid hiervan is in de praktijk beperkt, omdat de gegevens niet op elke regel staan, en er dus alsnog in de analysefase een apart bestand gemaakt moet worden dat dan gecombineerd moet worden met de responsdata.

Wat mij betreft kunnen deze kolommen gewoon weg dus.

maartenuni commented 2 years ago

Deze vind ik een beetje raar. Wil je heel birth_year, birh_month, Multilingual Dyslexic Sex Handpreference uit de output halen? Er komen extra kolomen om dat de json wordt platgeslagen naar .csv. In de json output staat:

    {
        "rt": 5168.599999999991,
        "uil_save": true,
        "survey_data_flag": true,
        "trial_type": "survey-html-form",
        "trial_index": 2,
        "time_elapsed": 41249,
        "internal_node_id": "0.0-2.0-0.0",
        "subject": "co452qhn",
        "list": "list2",
        "birth_year": "1919",
        "birth_month": "1",
        "native_language": "d"
    },
    {
        "rt": 5152.300000000003,
        "question_order": "[0,1,2,3]",
        "uil_save": true,
        "survey_data_flag": true,
        "trial_type": "survey-multi-choice",
        "trial_index": 3,
        "time_elapsed": 46406,
        "internal_node_id": "0.0-2.0-1.0",
        "subject": "co452qhn",
        "list": "list2",
        "Multilingual": "Yes",
        "Dyslexic": "Yes",
        "Sex": "Male",
        "HandPreference": "Right"
    },

Terwijl in de output van een spr trial het volgende staat:

    {
        "rt1": -1,
        "rt2": -1,
        "rt3": -1,
        "rt4": -1,
        "rt5": -1,
        "rt6": -1,
        "rt7": -1,
        "rt8": -1,
        "rt9": -1,
        "rt10": -1,
        "rt11": -1,
        "rt12": -1,
        "rt13": -1,
        "rt14": -1,
        "rt15": -1,
        "id": 1,
        "item_type": "FIX_CROSS",
        "uil_save": false,
        "trial_type": "spr-moving-window",
        "trial_index": 6,
        "time_elapsed": 51273,
        "internal_node_id": "0.0-4.0",
        "subject": "co452qhn",
        "list": "list2"
    },

Daar staan de genoemde kolommen niet, maar dat komt wel in de csv, doordat de json helemaal word plat geslagen en dus komen die variablen als kolom in de CSV.

Maar het kan toch niet de bedoeling zijn dat de data van de genoemde variablen helemaal uit de data verwijder moet worden?

irisopgithub commented 2 years ago

nee zeker niet, moet zeker in de data blijven. maar waarschijnlijk staat die survey-data al in de kolom 'responses'. (daar staat het althans in de LD-experimenten). en omdat je toch met de hand een databestand moet gaan maken met al die survey-data erin voor elke pp, is het dan bijna net zo makkelijk om het daar maar vandaan te halen.

irisopgithub commented 2 years ago

hmm nee, ik zie nu die data niet in responses staat voor het SPR-experiment.

irisopgithub commented 2 years ago

in de LD-experimenten staat het er dubbel in, een keer in responses en dan nog een keer in aparte kolommen survey_html en survey-multi_choice-responses. dat heeft echt weinig zin. bij het SPR-experiment staat het er iig niet dubbel, dus dat is beter. maar bij beide soorten exp zou het genoeg zijn als het alleen in responses staat, omdat je dus toch met de hand moet gaan klooien, en dan staat het iig een beetje bij elkaar.

maartenuni commented 2 years ago

Ik heb ooit de volgende code geschreven in survey.js:


    on_finish: function(data){
        let responses = JSON.parse(data.responses);
        Object.keys(responses).forEach(
            function (key) {
                if (key in data) {
                    console.warn("Oops overwriting existing key in data");
                }
                data[key] = responses[key];
            }
        );
        delete data.responses;

Wat ik hier deed was de variable data.responses (de kolom waarin jij graag de data wilt) verwijderen omdat daar een javascript object terecht komt, als die in de data terecht kwam werd daar een json string van gemaakt, dus had je een klein stukje json in je json. Dat vond ik raar dus peuterde ik daar de variabelen met waarden uit en stopte ik die direct in de output en niet als json. Daarmee creëerde ik wel de aparte kolomen, maar zorgde wel voor duidelijkere output (kolom in csv met json output is raar naar mijn mening). Maar als dat de voorkeur geniet sloop ik dat stukje code er wel weer uit.