Aufgaben - Hu
Transcrição
Aufgaben - Hu
AnalysevonEyetracking-DatenmitR:Aufgaben 1.PsycholinguistischerMethodenworkshop anderHumboldt-UniversitätzuBerlin JochenLaubrock UniversitätPotsdam 8. April2010 DieAufgabensetzenvoraus,dassunserR-Paket eyetrackR installiertist. Das Paket ist noch in einer frühen Entwicklungsphase und deshalb noch nicht im Internet verfügbar. Sie müssen es stattdessen aus einem lokalen Archivinstallieren.Dasgehtamleichtestenwiefolgt: 1. Von http://amor.hu-berlin.de/~metznerp/eyetrackR/ das zur ComputernummerpassendeSkriptundeyetrackR.tar.gzaufdenDesktopherunterladen(rechtsklicken,speichernunter) 2. InR:Datei>R-Codeausführen>EntsprechendesSkriptvonDesktop wählen 3. Fertig Vorverarbeitung MitdemSkript preprocess lassensichEyelink®Eyetracker-Datenvomproprietären.edf-BinärformatinstandardisiertesASCII-Textformatwandeln.Das SkriptruftdasProgramm edf2asc derHerstellersSR Researchauf,welches aufdenRechnernimPoolnichtinstalliertist.1 1 edf2asc istnachvorherigerRegistrierungvonderWebseitedesHerstellerszubezie- hen. 1 2 SiefindenjedochdendurchAnwendungvon preprocess aufdieDatendatei 02.edf produzierten Output in den Dateien 02.msg und 02.dat. Normalerweiseverarbeitet preprocess(edfdir = '.', edf2ascpath = '~/bin/') alleedf-Dateienimdurch edfdir spezifiziertenVerzeichnisund verschiebtsiedannindasUnterverzeichnisprocessed.DieDatenwerden gefiltertinRohdaten(.dat-DateienimUnterverzeichnisdat)undinformative Botschaften (.msg-Dateien im Unterverzeichnis msg). Die Rohdaten sindeinfachZeitreihenderMessungen,meistbestehendausZeitstempel, x-undy-KoordinatedesBlickesundPupillengröße;beibinokulärerMessungfürjedesAugeeineSpalte.Die.msg-Dateienenthaltengrößtenteilsmit einemZeitstempelverseheneNachrichten,diederProgrammiererderExperimentalsteuerunghataufzeichnenlassen,aberauchInformationenüber dieQualitätderKalibrierung,überonlinedetektierteFixationenetc. Aufgaben 1. BetrachtenSiedieDatei02.msg(z.B.mitWordPad®) 2. LesenSiedieDatei02.msginR einundspeichernSiesieinderVariablen`msg'.NutzenSiedazudenBefehl readLines.LassenSiesich einigeZeilenvonmsganzeigen. AufbereitenderExperimentalnachrichten (messagefileparsing)undTextverarbeitung messagefileparsing Die Aufgabe beim Aufbereiten der .msg-Dateien besteht darin, die relevantenInformationenzuextrahierenundineinleichterzuverarbeitendes Formatumzuformen,meistenseineTabelle. ImfolgendenBeispielsindeinigeZeilenausderDatei02.msgaufgelistet: # Dateikopf MSG 1219952 DISPLAY_COORDS 0 0 1023 767 MSG 1219952 RETRACE_INTERVAL 8.32998624833 # pro Satz MSG 1370977 TRIALID 0 START 1371033 RIGHT EVENTS # entweder (Trialstart nicht erfogreich) MSG 314789 -7 trialstart fixation trigger MSG 318798 0 trialstart fixation not detected, timer # oder (Trialstart erfolgreich) MSG 568813 -7 trialstart fixation trigger 3 MSG 569186 Start Recording MSG 569193 -2 sentence displayed MSG 569193 -2 !V DRAW_LIST ../../runtime/dataviewer/01/graphics/VC_1.vcl MSG 569194 -1 !V IAREA FILE ../../runtime/dataviewer/01/aoi/IA_1.ias MSG 569527 0 sound triggered MSG 569539 sound presentation started MSG 570994 0 trialend fixation trigger MSG 570995 End Recording END 571013 EVENTS RES 28.28 27.94 MSG 1373804 !V TRIAL_VAR trial_pre 1 [...] # MSG $TIMESTAMP !V TRIAL_VAR ... (siehe unten) [...] MSG 571109 !V TRIAL_VAR rolle f MSG 571110 TRIAL_RESULT 0 # Botschaften nach TRIAL_VAR # trial_pre 1 # sentence_pre Sie: "Wie findest du mein Kleid?" # boundary_pre 5 # sound_pre 1-F-Wie.wav # rolle_pre f # calibrationRequested False # playsound 1 # sprecher m # group 1 # doIncludePretest 1 # trial 1 # sentence Sie ruft "Hermann..." durch die offene Küchentür. # boundary 9 # sound 1-M-Herm.wav # rolle f DiemeisteninteressantenBotschaftenhabendasFormat MSG Zeitstempel Botschaft, wobei Botschaft wiederum aus mehreren Feldern bestehen kann. Außerdementhältdie.msg-DateinocheinigeBotschaftenüberSakkadenundFixations-Events,generiertdurchSR ResearchOnline-Parser.HierbedeutenSFIX bzw.EFIX Startbzw.EndeeinerFixation;SSACC/ESACC:Start/Ende einerSakkade;inderOffline-Analyseinteressierennormalerweisenurdie mit`E' beginnendenBotschaften: # Format: # EFIX R t0 t1 dauer xpos ypos pupillenDurchmesser # ESACC R t0 t1 dauer x0pos y0pos x1pos y1pos amplitude spitzenGeschwindigkeit SFIX R 1374086 EFIX R 1374086 1374513 428 931.6 685.8 1224 SSACC R 1374514 ESACC R 1374514 1374615 102 931.5 687.0 213.6 409.9 26.06 436 Aufgaben 1. ExtrahierenSieausder(indervorigenAufgabeeingelesenen)VariablenmsgdieZeilenmit… 4 a) TRIALID-BotschaftenundspeichernsieimVektor alltrialidMsg. b) sound triggered-BotschaftenundspeichernsieimVektor allsoundtriggeredMsg. c) sound presentation started-Botschaftenundspeichernsieim Vektor allsoundstartMsg. d) sentence displayed-BotschaftenundspeichernsieimVektor alltextonMsg. e) TRIAL_VAR playsound-BotschaftenundspeichernsieimVektor allExpPlaysoundMsg. Hinweis:NutzenSiedenBefehl grep undbeachtenSiedessenParameter value.FallsWarnungenderForm``inputstringisinvalidinthis locale''auftreten,setzenSie useBytes=TRUE. 2. SchreibenSieeineFunktion`extractMsgTimeStamp',diedenZeitstempelausdenMSG-Zeilenextrahiert.WendenSiedieFunktionauf allsoundstartMsg an.Hinweis:SiemüssendenR-Befehl function nutzen;hilfreichsindaußerdemdieR-Befehle [, sapply und strsplit. 3. Extrahieren Sie das Feld hinter `playsound' aus den Botschaften in allExpPlaysoundMsg undspeichernesimVektor expPlaysound. 4. StudierenSiedieFunktion parse_msg_file_AAA (ImUnterverzeichnisdemovoneyetrackR). Ein Resultat des message file parsing ist eineTabelle mit InformationenüberdieTrials,miteinerZeileproTrialbzw.Satz.DasBeispielskript generate_tables_from_msg_files.R zeigt,wiesichdiese(.trialinfo)und andereTabellen herausschreiben lassen. Das darauf aufbauende Beispiel generate_list_of_wordinfo.R illustriert,wiemandieZeilenausden.trialinfoDateien`ausrollen'kannzueinerZeileproWort.DiesesFormatbietetsich an,umCorpusinformationoder(z.B.auspraat-Kodierungenerhaltene)InformationüberdieAussprechdauervonWörternhinzuzufügen. Textverarbeitung:EigenschaftendesSatzcorpus OftistineinergesondertenDateiSatzcorpusinformationenüberdieeinzelnengelesenenWörtergespeichert.DieseenthältüblicherweisefürjedesgeleseneWortdieSatznummer,laufendeNummerdesWortesimSatz 5 undzusätzlicheInformationenwieWortlänge,WortfrequenzinderSprache(ausDatenbankabfragen,z.B.CELEX,dlexdb)etc.DiefolgendeAufgabeillustriertdieBerechnungderWortlängeundderAnzahlderWörterim Satz. load(sent) head(sent) # # # # [1] Sie: "Wie findest du mein Kleid?" Er: "Welches?" [3] Sie: "Das ich anhabe." Er: "Besonders hübsch." [5] Sie: "Oder findest du das grüne schöner?" Er: "Das grüne?" 86 Levels: Aber er antwortet: "Ich möchte jetzt nicht lesen.", und wird langsam unruhig. ... sent <- as.character(sent) Aufgaben GegebendieVariable sent,berechnenSie 1. einenVektor,derfürjedenSatzdieLängeinBuchstabenenthält. 2. einenVektor,derfürjedenSatzdieAnzahlWörterenthält. 3. eine Liste, die für jeden Satz einenVektor mit denWortlängen der einzelnenWörterenthält, a) inklusivePunktuation. b) ohnePunktuation. FürwelcheWörterunterscheidensich(3a)und(3b)besondersdeutlich? Hinweis:dieFunktionen nchar, strsplit, sapply und unlist sindhilfreich,beachtenSieauchdieHilfeseitezuregularexpressions. KonstruktionvonFixationssequenzen Matching EineimmerwiederkehrendeAufgabebetrifftdasZusammenfügenvonDatensätzen.Diesesindoftunterschiedlichlang,habenaberkorrespondierendeElemente.EinBeispielistdashinzufügenvonWortfrequenzenausder Corpusdatei(nWordsZeilen)zuderalltrialinfo-Datei(nWords × nSubjects Zeilen). Ein weniger triviales Beispiel ist z.B. das Hinzufügen von praatKodierungenfürausgesprocheneWörterzueinerListevonWörtern,von 6 denennureinigeausgesprochenwurden.FürdieseArtvonAufgabebietet R diesehrkomfortablenOperatoren match und %in%.Zusammenfügenist einefehleranfälligeOperation,dieSicherheitschecksverdient. ImfolgendenBeispielwirdanhandsimulierterDatenillustriert,wieder match-Befehlfunktioniert: id <- 3:5 word <- 11:14 # simulierte Vp # simulierte Wörter simFrq <- 2*10^(5.2*runif(length(word))) # unsinnige Zufallszahlen als simulierte Wortfrequenzen wordTab <- data.frame(word, simFrq) # "Corpus": Wort-ID und Wortfrequenz # Erstellen einer simulierten Trial-Tabelle, "Experiment 1" idInTrialTab <- rep(id, each=length(word)) # Vp-ID wordInTrialTab <- rep(word, length(id)) # Wort-ID trialTab <- data.frame(idInTrialTab, wordInTrialTab) # "Trial-Tabelle": Vp-ID und Wort-ID names(trialTab) <- c("id", "word") # Illustration des Match-Befehls ixWordTabIntoTrialTab <- match(trialTab$word, wordTab$word) trialTab$frq <- wordTab[ixWordTabIntoTrialTab, "simFrq"] str(trialTab) # 'data.frame': # $ id : int # $ word: int # $ frq : num 12 obs. of 3 variables: 3 3 3 3 4 4 4 4 5 5 ... 11 12 13 14 11 12 13 14 11 12 ... 290264.4 31.6 215.7 57859.6 290264.4 ... # "Experiment 2": verschärfte Version: randomisierte Präsentationsreihenfolge: wordInTrialTabR <- NULL for (i in 1:length(id)) { # sample (Ziehen ohne Zurücklegen) simuliert randomisierte Präsentationsreihenfolge wordInTrialTabR <- c(wordInTrialTabR, sample(word)) } trialTab$wordR <- wordInTrialTabR # match-Befehl hilft auch hier ixWordTabIntoTrialTabR <- match(trialTab$wordR, wordTab$word) trialTab$frqR <- wordTab[ixWordTabIntoTrialTabR, "simFrq"] str(trialTab) # 'data.frame': 12 obs. of 5 variables: # $ id : int 3 3 3 3 4 4 4 4 5 5 ... # $ word : int 11 12 13 14 11 12 13 14 11 12 ... # $ frq : num 290264.4 31.6 215.7 57859.6 290264.4 ... # $ wordR: int 14 12 11 13 12 11 13 14 14 11 ... # $ frqR : num 57859.6 31.6 290264.4 215.7 31.6 ... Aufgaben HinzufügenvonKorpusinformationzuTrial-Informationen frqfile <- "dlexdb-beta-v0_01.csv" wrdfile <- "wordinfo.rda" 7 frq <- read.table(frqfile, header=TRUE) load(wrdfile) # ... 1. FügenSiedieKorpusfrequenzenausderDatei dlexdb-beta-v0_01.csv (1ZeileproWort)zuderTabelle wrdinfo (1 Zeile proVp × Wort) ausderDatei wordinfo.rda)hinzuundnutzenSiedabeidieFunktion match.Hinweis:DieKorpusfrequenzenlassensichmit read.csv einlesen. 2. EinWortfehltinderDatenbank:welches? 3. StellenSiedurchTestsmit stopifnot sicher,dass(a)in wrdinfo tatsächlichfürjedenProbanden1ZeileproWortenthält,und(2)dass tatsächlichdiepassendenWörteraus frq und wrdfile zusammengefügtwurden.Hinweis:NutzenSiefür(2) gsub('[[:punct:]]', '', ...) und tolower. HinzufügenvonSakkadeninformationzuFixationsinformation 1. DieDateien02.fixund02.sacenthaltenInformationenüberdiemit demSR ResearchOnline-ParserdetektiertenFixationenbzw.Sakkaden.ErstellenSieeinen data.frame namens seq,deranalleFixationendieEigenschaftender nachfolgenden Sakkadeanfügt.Hinweis: NutzenSiedieFunktion match undbeachtenSie,dassderSR Parser denBeginneinerSakkadestetsmitdemaufdasEndedervorhergehendenFixationfolgendenZeitstempelmarkiert. 2. Einige Fixationen in seq werden nicht von Sakkaden gefolgt. Was zeichnetdieseFixationenaus? Sakkadendetektion Aufgabe data(trial4) Die Daten für trial4 stammen aus einem Lifespan-Leseexperiment sind miteinerAbtastratevon500Hzaufgenommen.FürdieGeschwindigkeitsberechungempfiehltsichstärkereGlättung(TYPE=2 imAufrufvon vecvel). 1. LassenSiesichgrafischdieRohdatenfüreinenTrial(trial4)anzeigen.NutzenSiedazu matplot,umdenVerlaufderVariableninden Spalten2-7überdieZeit(Spalte1)darzustellen,sieheAbbildung1. 8 2. BerechnenSiemit vecvel diex-GeschwindigkeitundstellenSiexPosition und -Geschwindigkeit grafisch dar. Nutzen Sie dazu zwei übereinanderangeordnetePanelsinnerhalbeinesGrafikfensters,sieheAbbildung2.BeachtenSie,dassdieFunktion vecvel immerdie Zeitreihenfürx-undy-Positionbenötigt. 3. DetektierenSieSakkadenmitderFunktion microsacc.Vergleichen SiedieSakkadendetektion(a)mitund(b)ohneEntfernenvonGlissadenundstellenSiedasErgebnisgrafischdar,sieheAbbildung3. 4. VergleichenSiediemit microsacc und removeGlissades detektierten Sakkaden mit dem vom Online-Parser des Herstellers (SR research) detektierten, sieheAbbildung 4. Nutzen Sie dazu die Datensatz allSeqSR.rda und allSeqPotsdam.rda (DieDatenstammenaus einem Experiment mit blickkontingenter akustischer Sprachpräsentation). Zum Nachvollziehen: Die Dateien sind mit den R-Skripten beispiel_sequenz_aus_fix_und_sac_SR.R bzw. beispiel_sequenz_aus_fix_und_sac_Potsdam.R erzeugtworden. 2 0 -2 scale(trial4[, 2:7]) 4 xl yl pl xr yr pr 0 500 1000 1500 2000 2500 3000 t [ms] Abbildung 1:BeispiellösungAufgabe1 BerechnungaggregierterMaßeaus Fixationssequenzen MeistwerdenineinemweiterenSchrittderVorverabeitungdieFixationen ausdenFixationssequenzengemäßbestimmterEigenschaftenklassifiziert xl 200 600 1000 9 0 500 1000 1500 2000 2500 3000 2000 2500 3000 5000 -5000 0 vxl t [ms] 0 500 1000 1500 t [ms] Abbildung 2:BeispiellösungAufgabe2 0 200 ooo oooo oo oooo oo oo 2000 -2000 o oo oooooo o oo o oo oo o oo oo o oooo o oo oo oo o oooo x position 6000 removeGlissades=FALSE ooo oo oo oo o oo o oo oo o oooo ooo -6000 2000 -2000 -6000 velocity 6000 velocity ooo oo oo oo o oo o oo oo o oooo ooo 400 600 800 0 o oo oooooo o oo o oo oo o oo oo o 200 time [ms] 0 ooo ooooo oo oo 2000 x position ooo oooo -2000 oooo o oo oo oo o oo oooo ooo oo oo oo o oo o oo oo o ooooo oooo 400 time [ms] 600 800 600 800 o oo oooooooo o oo o oo oooo o oo oo oo o oo oooo ooo oooo ooo ooooo oo oo oo o oo oo o -6000 6000 2000 x position 6000 200 400 oo oooo oo oo removeGlissades=FALSE, after binsacc oo o oo oo o -6000 -2000 o oo oooooooo o oo o oo ooo oooo time [ms] removeGlissades=TRUE ooo oo oo oo o oo o oo oo o ooooo oooo oooo o oo oo oo o oooo 0 200 400 600 time [ms] Abbildung 3:BeispiellösungAufgabe3 800 10 1500 500 0 Frequency Fixation durations, Toronto saccade parser (SR research) 0 200 400 600 fixation duration [ms] 1500 500 0 Frequency Fixation durations, Potsdam parser (microsacc, removeGlissades) 0 200 400 600 fixation duration [ms] Abbildung 4:VergleichSakkadendetektionmicrosacc/removeGlissadesvs. SR onlineparser undweiteraggregiert.InderLeseforschungistinsbesonderedieUnterscheidungzwischenFirstpass-FixationenundFixationenimzweitenundinweiterenDurchgängenwichtig.BeispielsweiseisteinhäufigzurBeschreibung kognitiverVerarbeitungbeimLesenverwendetesaggregiertesMaßdiesogenannte gazeduration,definiertalsSummeallerFirstpass-Fixationsdauern aufeinemWort. Aufgaben KlassifizierenvonFirstpass-Fixationen data(a) str(a) # 'data.frame': 4749 obs. of 91 variables: # ... ashrt <- a[order(a$id, a$sn), c("id", "sn", "wn", "nw")] str(ashrt) # 'data.frame': 4749 obs. of 4 variables: # $ id: int 1 1 1 1 1 1 1 1 1 1 ... # $ sn: int 1 1 1 1 1 1 1 1 1 1 ... # $ wn: int 1 2 3 4 5 4 6 7 9 10 ... # $ nw: int 10 10 10 10 10 10 10 10 10 10 ... 11 DerDatensatzin a enthältdieDateneinigerProbandeneinesLeseexperimentesim`distributedprocessing'-Format.BerechnenSiedurchNutzung derFunktion firstpass dieVariable fpf (bzw. fpf1),dieangibt,obeine FixationzumerstenoderzueinemderweiterenDurchgängengehört.Sie müssendazu firstpass proVpundSatzanwenden. • LangeVersion: Berechnen Sie fpf durcheineSchleifeüber unique Wertevon a$id und a$sn. • KurzeVersion:BerechnenSie fpf1 mitHilfevon tapply und unlist, indemSiezunächsteinengeeignetenIndexerstellen. • StellenSiemit identical oder all.equal sicher,dassfpf1undfpf identischsind BerechnungderBlickdauer(`gazeduration')alsSummederFirstpassFixationsdauerndurations,Hinzufügenzu a data(a) ashrt <- a[order(a$id, a$sn), c("id", "sn", "wn", "nw", "dur")] • GegebendieDatenin ashrt unddieobenberechneteIndikatorvariable fpf, berechnen Sie dieVariable gd,diegenausolangistwie ashrt$dur. DerVektor gd solljeweilsfürdieersteFixationimfirst passeinesWortesdieBlickdauer(alsodieSummeallerfirstpass-Fixationsdauern) enthaltenundfüralleanderenFixationenaufNA gesetztsein.BeiRefixationen wird hier also die Blickdauer der ersten Fixation der Sequenzzugewiesen.Hinweis:NutzenSiedieFunktion parseq. • BerechnenSiefürjedenvalidenEintragin gd dieAnzahlderFixationenimgazeundfügenSiedieVariable ngz zu ashrt hinzu. AnalyseimlinearmixedmodelAnsatz Wennendlichallesvorbereitetist,kannderSpaßbeginnen.Linearmixed modelshabenimVergleichzurklassischenANOVA,inderSubjekt-und Itemanalyse(F1undF2)zukonfligierendenErgebnissenkommenkönnen, u.a. denVorteil eindeutiger interpretierbarer Aussagen. Mit dem R-Paket lme4 lassensichsolcheAnalysen komfortabel durchführen. Gute EinführungenbietenBaayen(2008)oderKliegl(2007),sieheauch http://supp.apa.org/psycarticles/supplemental/xge_136_3_530/xge_136_3_530_supp.html. 12 EchteDaten DasR-PaketeyetrackR enthälteinigeHilfsroutinen,diebeiderVorverarbeitungvoneyetracker-DatennützlichsindsowieeineReihevonDemos,die alsVorlagefüreigeneAnalysengenutztwerdenkönnen(demosliegennach InstallationvoneyetrackR in file.path(.libPaths()[1], ëyetrackR", "demo")).DiefolgendenSchrittefallenüblicherweisebeiderVorverarbeitungderDatenan: 1. Hilfsroutinen • preprocess oderedf2asc:UmwandelnderEyelink-Binärdateien inText(ASCII) • readSubjects:LeseneinerListevonVp-CodesauseinerDatei undTestaufVorhandenseinderkorrespondierendenDatensätze • parseq:allgemeineHilfsroutine,DetektionvonStart,Endeund LängevonSequenzen • firstpass:Klassifikationvonfirstpassvs.Rest • vecvel:GeschwindigkeitdesAugesberechnen • microsacc:Sakkadendetektion • removeGlissades:EntfernungvonGlissaden(over-/undershoot) • binsacc:implementiertbinokuläresSakkadenkriterium,detektiertundkombiniertaußerdemSakkadencluster • saccpar:berechnetundkombiniertParameterfürbinokuläreSakkaden • wordLetterPos:konvertiertFixationsposition[Pixel]inWort-und Buchstabenposition(nimmtz.Zt.FontmitfesterLaufweiteund bekannterBreiteinPixelan) • probdur1:BerechnungaggregierterMaßeausFixationssequenz füreinenSatz 2. Demos • xallsac_EXP: Daten-Management, ruft preprocessing für jede VpaufundakkumuliertErgebnisse;Output:Fixationssequenz • parse_msg_file_EXP:parseeyetrackermessagefiles • xSetup1_EXP: Fixationssequenzen aufbereiten zur Analyse im verteilten Format, d.h. unter Analyse von Maßen des fixierten 13 WortesunterBerücksichtigungderEigenschaftenbenachbarter oderauchunmittelbarvorherbzw.anschließendfixierterWörter • xIndex_fix_EXP_logical.R: Erstellen einiger nützlicher Indizes,z.B.fürvalidefirst-passFixationen • xSetup2_EXP: Zentrieren undTransformieren von Prädiktoren; Fallauswahl für weitereAnalyse (z.B. Beschränkung auf valide Firstpass-Fixationen,auf(n-1,n,n+1)-Fixationstripletsetc.) • xProbdur_EXP:ErzeugendeskriptiverStatistikenüberWahrscheinlichkeiten,Fixationsdauernund-Positionenfürfirst-passundsecondpassLesen DieüblicheReihenfolgebeiderAnalyseist 1. preprocess 2. xallsac_EXP, parse_msg_file_EXP,AnpassenderParameterdatei 3. xSetup1_EXP 4. xIndex_fix_EXP_logical 5. xSetup2_EXP,ggf.auch xProbdur_EXP 6. Analysemitlinearmixedmodels