class: center, middle, inverse, title-slide # Einführung in empirische und experimentelle Forschungsmethoden ## Gruppe 08 ### Jonas Großekathöfer ### 28.05.18 --- class: inverse, center, middle # Heute --- ## Erhebung ## Programmieren mit PsychoPy ## und Co. --- ## Zeitplan <font size="-1"><table style='width:100%;'> <thead> <tr> <th style="text-align:center;"> Nr. </th> <th style="text-align:center;"> Termine </th> <th style="text-align:left;"> Thema </th> </tr> </thead> <tbody> <tr> <td style="text-align:center;"> 1 </td> <td style="text-align:center;"> 09. April 2018 </td> <td style="text-align:left;"> Orga, Kennenlernen, ... </td> </tr> <tr> <td style="text-align:center;"> 2 </td> <td style="text-align:center;"> 16. April 2018 </td> <td style="text-align:left;"> 7 Todsünden psychologischer Forschung </td> </tr> <tr> <td style="text-align:center;"> 3 </td> <td style="text-align:center;"> 23. April 2018 </td> <td style="text-align:left;"> </td> </tr> <tr> <td style="text-align:center;"> 4 </td> <td style="text-align:center;"> 30. April 2018 </td> <td style="text-align:left;"> Entscheidung </td> </tr> <tr> <td style="text-align:center;"> 5 </td> <td style="text-align:center;"> 07. Mai 2018 </td> <td style="text-align:left;"> Forschungsfrage, Hypothesen, AV & UV </td> </tr> <tr> <td style="text-align:center;"> 6 </td> <td style="text-align:center;"> 14. Mai 2018 </td> <td style="text-align:left;"> kurze Sitzung: Präregistrierung abschließen & Pilotierung (Mi, 16.5., oder Do, 17.5.) </td> </tr> <tr> <td style="text-align:center;"> </td> <td style="text-align:center;"> 21. Mai 2018 </td> <td style="text-align:left;"> Sitzung entfällt: Pfingsten, Erhebungsstart </td> </tr> <tr> <td style="text-align:center;"> 7 </td> <td style="text-align:center;"> 28. Mai 2018 </td> <td style="text-align:left;"> Erhebungsstatus, Programmieren und Co. </td> </tr> <tr> <td style="text-align:center;"> 8 </td> <td style="text-align:center;"> 04. Juni 2018 </td> <td style="text-align:left;"> Auswertung </td> </tr> <tr> <td style="text-align:center;"> 9 </td> <td style="text-align:center;"> 11. Juni 2018 </td> <td style="text-align:left;"> Erhebungsende, Auswertung </td> </tr> <tr> <td style="text-align:center;"> 10 </td> <td style="text-align:center;"> 18. Juni 2018 </td> <td style="text-align:left;"> Auswertung/Poster (Texte) </td> </tr> <tr> <td style="text-align:center;"> 11 </td> <td style="text-align:center;"> 25. Juni 2018 </td> <td style="text-align:left;"> Poster (Texte/Design) </td> </tr> <tr> <td style="text-align:center;"> 12 </td> <td style="text-align:center;"> 02. Juli 2018 </td> <td style="text-align:left;"> Poster (Design) </td> </tr> <tr> <td style="text-align:center;"> 13 </td> <td style="text-align:center;"> 09. Juli 2018 </td> <td style="text-align:left;"> Prüfung und Posterkongress vsl. am Mittwoch, den 11. Juli 2018 </td> </tr> </tbody> </table> </font> --- class: inverse, center, middle ## Wie läuft die Erhebung? --- ### Was läuft schlecht? -- - Anleitung anpassen? - Automatisierte Emails verschicken? -- - *halb* möglich, müsste jeden Tag vor Erhebung manuell ausgeführt werden, - dann aber automatisch nur an Teilnehmer in entsprechenden Slots -- ### Was läuft gut? -- - Wie lang pro Versuchsperson? - VP enger takten? --- class: inverse, center, middle ## Programmieren --- class: center, middle  --- ### Python - FOSS - **F**ree **O**pen **S**ource **S**oftware - läuft auf **allen** Betriebssystemen - *Mehrzweck*-Programmiersprache ### PsychoPy - Bibliothek in Python: Sammlung an relevanten Funktionen für die psychologische Forschung - Eigenständiges Programm basierend auf Python: Mit allen relevanten Funktionen (und deren Abhängigkeiten) für psychologische Forschung --- ### GUI .pull-left[ #### Builder - point&click - Tutorials und Material gibt es [hier](http://www.psychopy.org/resources/resources.html#materials-for-builder)  ] .pull-right[ #### Coder - text-basiert - Tutorials und Material gibt es überall & heute!  ] --
Schließt den Builder und wählt die Shell im Coder aus. --- ### Shell - direkte Interaktion: Befehle werden unmittelbar ausgeführt - Wirklich? ```python # Das wollen wir erstmal sehen! 1 + 1 5 * 5 ``` -- - Mathematische Operatoren scheinen zu funktionieren! -- ### Kommentare ```python # Was passiert jetzt in der Shell? # 1 + 1 1 + 1 # funktioniert allerdings! ``` - Nichts, denn Zeichen, die in einer Zeile dem # **folgen** werden bei der Ausführung ignoriert --- ### Variablen (und die erste Funktion!) ```python print("Hello World") # string print(207) # integer number print(11.1) # real number print(False) # boolean False, the opposite of True ``` -- - Variablen können Namen haben ```python s = "Hello World!" u = 10 p = 1.1 i = u + p print(s) print(i) ``` -- ### Editor - Versucht die gleichen Befehle im Editor und schaut im Output-Fenster was passiert. --- ### Stimuluspräsentation -- #### Vorbereitung -- ```python #!/usr/bin/env python # -*- coding: utf-8 -*- # The first line is called the hash bang. It helps operating # systems understand what to do with this script. # The second line describes the encoding of this file. UTF-8 # is the only one used nowadays. It supports all alphabeths, # even runes and linear B. # Import the PsychoPy libraries that you want to use from psychopy import core, visual ``` - In der Dokumentation sind die Funktionen (der Module) [hier](http://psychopy.org/api/visual.html) erklärt -- - für *visual* findet man beispielsweise die beiden folgenden Funktionen [*Window*](http://psychopy.org/api/visual/window.html#psychopy.visual.Window) und [*TextStim*](http://psychopy.org/api/visual/imagestim.html#psychopy.visual.ImageStim) ```python # Create a window win = visual.Window([400,300], monitor="testMonitor") # Create a stimulus for a certain window message = visual.TextStim(win, text="Hello World!") ``` --- ### Stimuluspräsentation #### Kontrolle -- ```python # Draw the stimulus to the window. message.draw() # Flip backside of the window. win.flip() # Pause 5 s, so you get a chance to see it! core.wait(5.0) ``` --- ### Stimuluspräsentation #### Aufräumen -- ```python # Close the window win.close() # Close PsychoPy core.quit() ``` --- ### Stimuluspräsentation ```python #!/usr/bin/env python # -*- coding: utf-8 -*- from psychopy import core, visual win = visual.Window([400,300], monitor="testMonitor") message = visual.TextStim(win, text="Hello World!") message.draw() win.flip() core.wait(5.0) win.close() core.quit() ``` ??? - Dokumentation benutzen um Größe, Farbe etc. von Text zu verändern? - Dokumentation benutzen um Bild anzuzeigen? - Zwei verschiedene Texte nacheinander? --- ### Input ```python #!/usr/bin/env python # -*- coding: utf-8 -*- # Note: import the event module from psychopy import core, visual, event ## Setup Section win = visual.Window([400,300], monitor="testMonitor") textString = "Press any key to continue\n" message = visual.TextStim(win, text=textString) ## Experiment Section message.draw() win.flip() c = event.waitKeys() # read a character message = visual.TextStim(win, text=textString + c[0]) message.draw() win.flip() event.waitKeys() ## Closing Section win.close() core.quit() ``` --- ### Quellen - Online Kurs-Material von der Radboud University Nijmegen [hier](https://www.socsci.ru.nl/wilberth/psychopy/00intro.html) - Print-/Singlepage-Version [hier](https://www.socsci.ru.nl/wilberth/nocms/psychopy/print.php) - auf der offiziellen PsychoPy-Homepage: [hier](http://www.psychopy.org/resources/resources.html#materials-for-coder) --- class: inverse, center, middle ## und Co. --- class: inverse, center, middle # Vielen Dank für Eure Aufmerksamkeit! ## Bis nächsten Montag. # :-) .footnote[ <font size="-2">Slides created via the R packages [**xaringan**](https://github.com/yihui/xaringan) and [knitr](http://yihui.name/knitr), and [R Markdown](https://rmarkdown.rstudio.com)</font size> ]