Sensible Fragen: Listenexperimente und Randomized Response
Mit einem Listenexperiment oder Randomized Response in Potato nach Schummeln, Steuerhinterziehung oder Trunkenheit am Steuer fragen und Prävalenzschätzungen mit Standardfehlern erhalten.
Neu in v2.12.0
Fragt man Menschen direkt, ob sie geschummelt, Steuern hinterzogen oder betrunken Auto gefahren sind, wird unterschätzt, wie verbreitet das ist. Zwei Umfragedesigns lassen eine teilnehmende Person antworten, ohne ihre eigene Antwort preiszugeben, und erlauben der Studie trotzdem, die Prävalenz zu schätzen:
annotation_type | Design |
|---|---|
list_experiment | Die Item-Count-Technik: "Wie viele davon treffen auf Sie zu?", mit der sensiblen Aussage nur in der Liste der Treatment-Gruppe |
randomized_response | Eine private Zufallsregel entscheidet, ob die teilnehmende Person wahrheitsgemäß antwortet (forced_response), oder die Person gibt nur an, ob zwei Aussagen übereinstimmen (crosswise). Siehe Randomized Response |
Beide funktionieren auf Umfrageseiten und bei Annotationsitems, und der Export survey_experiments berechnet die Schätzungen.
Listenexperiment
conditions:
factors:
list_group: [control, treatment]
annotation_schemes: # or on a survey page
- annotation_type: list_experiment
name: lists
description: How many of these have you done in the last year?
items:
- Gone to a live music concert
- Bought a book in a shop
- Volunteered for a local group
sensitive_item: Driven a car after drinking alcohol
treatment: {factor: list_group, level: treatment}Teilnehmende in der Stufe treatment von list_group sehen vier Aussagen, alle anderen sehen drei. Der Server entfernt die sensible Aussage für die Kontrollgruppe aus der Seite, sodass sie nicht in deren HTML steht. Die teilnehmende Person antwortet mit einer Zahl. Die Bedingung stammt aus conditions, daher ist die Zuweisung über die beiden Gruppen ausgewogen (Experimentablauf).
Die Schätzung ist die mittlere Anzahl der Treatment-Gruppe minus der der Kontrollgruppe (der Differenz-der-Mittelwerte-Schätzer), mit einem Welch-Standardfehler und einem 95-%-Intervall. Sie setzt voraus, dass die sensible Aussage nicht verändert, wie Personen die anderen Aussagen beantworten, und dass niemand bei der Anzahl lügt.
| Schlüssel | Standardwert | Bedeutung |
|---|---|---|
items | erforderlich | Die Kontrollaussagen, mindestens zwei |
sensitive_item | erforderlich | Die Aussage, die nur die Treatment-Gruppe sieht |
treatment | erforderlich | {factor, level}: wer sie sieht. Der Faktor muss in conditions.factors stehen |
sensitive_position | zuletzt | An welche Stelle der Liste sie kommt, ab 0 |
count_prompt | "Number of statements:" | Die Beschriftung des Zahlenfelds |
Wählen Sie Kontrollaussagen, die kaum jemand alle mit Ja oder alle mit Nein beantworten würde. Erreicht die Anzahl bei der Kontrollliste ihr Maximum, wird ein Ja zur sensiblen Aussage an der Anzahl sichtbar.
Randomized Response: Forced Response
- annotation_type: randomized_response
name: tax
method: forced_response
description: This question uses a private random rule.
question: In the last five years, have you left income off a tax return on purpose?Die Seite fordert die teilnehmende Person auf, an den Monat zu denken, in dem ihre Mutter geboren wurde: bei Januar oder Februar mit Ja antworten, bei März oder April mit Nein, bei jedem anderen Monat die Frage wahrheitsgemäß beantworten. Geburtsmonate sind annähernd gleichverteilt, daher ist die Antwort mit Wahrscheinlichkeit 2/3 wahrheitsgemäß, mit 1/6 ein erzwungenes Ja und mit 1/6 ein erzwungenes Nein. Für eine andere Regel geben Sie randomizer an (den Text, den die Person liest) sowie p_truth, p_yes und p_no, deren Summe 1 sein muss.
Mit λ als Anteil der Ja-Antworten ist die Prävalenz π = (λ - p_yes) / p_truth, mit SE = √(λ(1 - λ)/n) / p_truth.
Randomized Response: Crosswise
- annotation_type: randomized_response
name: cheating
method: crosswise
description: Read both statements. Do not say which is true.
question: I have copied someone else's work and handed it in as my own.
nonsensitive_statement: My mother was born in January, February or March.
nonsensitive_prevalence: 0.25Die teilnehmende Person antwortet nur mit "Both statements are true, or neither is" oder "Exactly one statement is true" (Yu, Tian & Tang, 2008). Mit λ als Anteil der ersten Antwort und p als Prävalenz der nicht sensiblen Aussage gilt π = (λ + p - 1) / (2p - 1), mit SE = √(λ(1 - λ)/n) / |2p - 1|. Das Design verlangt, dass p nicht nahe bei 0.5 liegt, und Werte, die weniger als 0.05 davon entfernt sind, werden abgelehnt.
Export
python -m potato.export --config config.yaml --format survey_experiments --output ./export/Der Export schreibt survey_experiments.csv, eine Zeile pro Schema, mit dem Design, der Schätzung, ihrem Standardfehler und 95-%-Intervall sowie den zugrunde liegenden Zählwerten. Bei einem Listenexperiment enthält die Zeile außerdem die Gruppengrößen und -mittelwerte sowie excluded: wie viele Antworten keine ganze Zahl von 0 bis zur Anzahl der Aussagen waren, die die teilnehmende Person gesehen hat, nicht numerische Antworten eingeschlossen. Das Zahlenfeld auf der Seite akzeptiert einen Wert mehr, als eine Person der Kontrollgruppe sieht, und Antworten werden so gespeichert, wie sie gesendet wurden. Diese Prüfung übernimmt daher der Export.
Schätzungen werden nicht auf den Bereich 0 bis 1 begrenzt. Ein Wert außerhalb davon bedeutet, dass die Stichprobe zu klein ist oder eine Annahme nicht zutrifft.
Potato 2.12.0 schreibt außerdem keine Antworten von Teilnehmenden mehr in DEBUG-Protokolle. Ein Design, das jede einzelne Antwort aus den Aufzeichnungen heraushalten soll, gibt sie daher nicht über das Serverprotokoll preis.
Weiterführende Informationen
- Experimentablauf - Bedingungen und ausgewogene Zuweisung
- Mehrphasige Workflows - Umfrageseiten vor und nach der Aufgabe
- Umfrageimport - Einen Fragebogen aus Qualtrics, REDCap und anderen Tools übernehmen
Implementierungsdetails finden Sie in der Quelldokumentation.