0 votes
in SoSci Survey (dt.) by s209160 (125 points)

Liebe Community,

Ich würde mich sehr freuen, wenn mir jemand folgende Fragen zu meiner experimentellen Umfrage im Rahmen meiner Masterarbeit beantworten könnte. Ich weiß, der Text ist leider etwas lang, aber ich würde eine Antwort wirklich äußerst schätzen.

Diese Frage bezieht sich auf die Verwendung von Quoten (Zusammenarbeit Pannelanbieter). Hauptaugenmerk meiner Frage liegt auf Screenoutfragen.

Kurz zu meinem bisherhigen Schritten:
Zum einen verwende eine verbundene Quote (Geschlecht und "derzeitige Tätigkeit") die ich laut Anleitung auf einer extra angelegten Seite nach der Abfrage von Geschlecht und derzeitiger Tätigkeit eingebaut habe:

$quota = [ 
 '1-1' => 200, '1-2' => 200,  // 200 Personen pro Geschlecht für die Tätigkeitsgruppe 1
 '2-1' => 225, '2-2' => 225,  // 225 Personen pro Geschlecht für die Tätigkeitsgruppe 2
'3-1' => 150, '3-2' => 150,  // 150 Personen pro Geschlecht für die Tätigkeitsgruppe 3
'4-1' => 75,  '4-2' => 75,   //  75 Personen pro Geschlecht für die Tätigkeitsgruppe 4
];

// Geschlecht 
$gender = value('SD01');
if($gender ==1 or $gender ==3){
 $genderGroup = 1;
} elseif ($gender==2) {
$genderGroup  = 2;  
}

// Die Tätigkeit wird umkodiert
$tat = value('SD19');
if ($tat==1 or $tat==5) {
 $TaetigkeitsGroup = 1;
} elseif ($tat==2 or $tat==7) {
$TaetigkeitsGroup = 2;
} elseif ($tat==3 or $tat==6) {
 $TaetigkeitsGroup = 3;
} elseif (($tat==4)) {
 $TaetigkeitsGroup = 4;
}

// Definition einer Variable mit Tätigkeitsgruppe und Geschlecht
$demGroup = $TaetigkeitsGroup.'-'.$genderGroup;

// Abruf der vorliegenden Fälle für diese Merkmalsausprägung
$cases = statistic('count', 'IQ01_01', $demGroup);

// Auslesen der Quote für die demografische Gruppe
$maxPerGroup = $quota[$demGroup];

// Quotenstopp
if ($cases >= $maxPerGroup) {
 redirect('https://panel.com/quotasfull?p=114837_2a37a907m=%reference%');
}

Auf der quasi vorletzen Seite habe ich dafür dann noch folgenden Link eingefügt:

 // Geschlecht wird direkt ausgelesen
$gender = value('SD01');
// Die Tätigkeit wird umkodiert
$tat = value('SD19');
if ($tat==1 or $tat==5) {
 $TaetigkeitsGroup = 1;
} elseif ($tat==2 or $tat==7) {
$TaetigkeitsGroup = 2;
} elseif ($tat==3 or $tat==6) {
 $TaetigkeitsGroup = 3;
} elseif (($tat==4)) {
 $TaetigkeitsGroup = 4;
}

// Definition einer Variable mit Tätigkeitsgruppe und Geschlecht
$demGroup = $TaetigkeitsGroup.'-'.$gender;
// Speichern der Gruppenzugehörigkeit in der internen Variable SD04_01
put('IQ01_01', $demGroup);
redirect('https://panel.com/complete?p=114837_73d8656a&m=%reference%');

Meine ersten Fragen:

  1. Habe ich die Quotierung soweit richtig verstanden?
  2. Müssen hier noch weitere finish commands/exit links eingebaut werden? Finde das in der Anleitung zu den Quoten etwas verwirrend.
  3. Kann ich die Quoten während der Befragung noch nach oben setzen?
  4. Wie kann ich während der Befragung einsehen, welche Quoten schon gut erfüllt sind?

Meine weiteren Fragen bezieht sich auf weitere Screenouts:
Ich möchte noch drei weitere Screenouts einfügen: Einmal für Personen, die gar nicht zur Stichprobe passen, Speeder und einen Quality check. Die ersten beiden Screenouts hätte ich wie folgt eingebaut:

Screenout:
keine passenden Person (direkt nach Abfrage Alter):

if ((value('SD02_01') < 16) or (value('SD02_01') > 25))
{
goToPage('SCR');}

wobei ich die Seite 'SCR' eine Seite nach dem Redirect-Link für Completes eingefügt habe, dann auf der Seite nach Seite "SCR" noch einmal ein eigener Panel-Screenoutlink für diese Personen eingefügt ist. (Seitenreihenfolge daher: Letzte Seite Umfrage - SCR Seite mit SCR Text - SCR Seite mit SCRLink zurück zum Panelanbieter - Seite mit Complete redirects)

Speeder:
folgenden Link hätte ich auf der Seite der Complete redirect vor den PHP Code für den tatsächlichen complete redirect gesetzt:

if ((caseTime('begin') < 480)) {
redirect('https://panel.com/speeder?p=114837&m=%reference%');)}

Quality checkout:
In meinem Quasi-Experiment habe ich einen "Treatment-Check" eingebaut. Ich würde gerne ein Quality-Screenout vornehmen, wenn TeilnehmerInnen in der Treatment-Check Itembatterie die erste Frage nicht ankreuzen (diese müsste aber in allen Experimentalgruppen angekreuzt werden).

Soweit ich es verstehe, muss ich auf einer neuen Seite nach dem Treatment-Check folgenden Code einfügen:

if ((value('TC03') != 1)){redirect('https://panel.com/quality?p=114837 m=%reference%');}

Mein Problem: dadurch schließe ich zwar Personen aus, die die erste der 6 Optionen in der Variable nicht angekreuzt haben, aber leider auch Personen, die die erste Option zwar angekreuzt haben aber auch noch weitere der 5 anderen Optionen. Und das möchte ich auf keinen Fall. Daher meine Frage: Wie könnte ich diesen Code umformulieren, damit nur darauf geachtet wird ob die erste Option angekreuzt wird aber es egal ist, wie viele weitere Optionen zusätzlich angekreuzt werden.

Bei den Screenouts hätte ich noch eine weitere Frage:

Habe ich diese richtig programmiert, d.h. gehen diese nicht als "completes" beim Panel ein? Da bin ich mir etwas unsicher, da ich in meinem Code keine "Exit" links eingebaut habe und auch nicht direkt auf der ersten Seite Code für die Quoten stehen haben, wie zu Beginn in der Anleitung beschrieben.

Ich sage jetzt schon einmal vielen herzlichen Dank für die Hilfe.

1 Answer

0 votes
by SoSci Survey (305k points)

Habe ich die Quotierung soweit richtig verstanden?

Der Code sieht auf den ersten Blick korrekt aus.

Müssen hier noch weitere finish commands/exit links eingebaut werden? Finde das in der Anleitung zu den Quoten etwas verwirrend.

Wenn Sie mit einem Complete- und einem Quotefull-Link zufrieden sind, dann reicht das.

Beschreiben Sie gerne, was an der Anleitung verwirrend ist, dann räumen wir da gerne ein wenig auf.

Kann ich die Quoten während der Befragung noch nach oben setzen?

Ja.

Wie kann ich während der Befragung einsehen, welche Quoten schon gut erfüllt sind?

Am einfachsten, indem Sie eine Häufigkeitsauswertung über IQ01_01 (ggf. als Kreuztabelle mit FINISHED) laufen lassen.

keine passenden Person (direkt nach Abfrage Alter):

Direkt danach ist technisch nicht möglich, denn auf der Seite wo das Alter angefragt wird, ist ja die Antwort der Befragten noch gar nicht bekannt - den Code würden Sie oben auf die nächste Seite setzen.

Außerdem würde ich anstatt eines goToPage() empfehlen, direkt das passende redirect() zu verwenden.

if ((caseTime('begin') < 480)) {
redirect('https://panel.com/speeder?p=114837&m=%reference%');)}

Da ist am Ende eine runde Klammer zu viel, aber ansonsten kann man das so machen.

Wie könnte ich diesen Code umformulieren, damit nur darauf geachtet wird ob die erste Option angekreuzt wird

Ich rate mal, dass es sich um eine Mehrfachauswahl handelt? Dann haben Sie hier mehr Variablen (s. Variablen-Übersicht) und der Code könnte so aussehen:

if (value('TC03_01') == 2) {
  redirect('...');
}

Habe ich diese richtig programmiert, d.h. gehen diese nicht als "completes" beim Panel ein?

Das hängt davon ab, was genau im redirect()-Befehl steht. Da sollten Sie unterschiedliche Links für Completes und Screenouts haben.

by s209160 (125 points)
Herzlichen Dank für das schnelle Feedback!

Bezüglich der Verbesserung der Website:

Zum einen könnte eine klarere Abtrennung der einzelnen Kapitel helfen (mir war z.B. nicht klar, dass der Code für die Minimalquotierung für mich gar nicht relevant ist). Hier wäre es gut, wenn man über die einzelnen Kapitel spricht, zu erwähnen, wann der vorherige Code relevant ist und wann einen andere Logik greift.

Zum anderen wäre es besonders im Kapitel "Filter" hilfreich, anzuführen, wie genau man einen Filter einbaut, der für Screenouts bei Paneldata verwendet wird. Das derzeitige Beispiel mit der intervenierenden Variable ist für Paneldata ja eher irrelevant (hat mich etwas Zeit gekostet und für Verunsicherung gesorgt).

Drittens hätte ich es hilfreich gefunden, zu wissen, wann genau man nun $finished und $value verwendet. Das ist mir bis jetzt nicht ganz klar (nur in der Minimalquotierung?)

Außerdem hätte ich noch eine kurze Rückfrage. Sie haben auf meine Frage "Wie kann ich während der Befragung einsehen, welche Quoten schon gut erfüllt sind?" geantwortet: Am einfachsten, indem Sie eine Häufigkeitsauswertung über IQ01_01 (ggf. als Kreuztabelle mit FINISHED) laufen lassen.

Hier wollte ich Sie bitten, das etwas genauer zu erläutern. Meinen Sie, dass ich, wenn die Umfrage im Feld ist, die Häufigkeiten immer wieder downloaden soll und dann bei allen Fällen, die als "FINISHED" gekennzeichnet sind, für jede Quotengruppe die Anzahl der TeilnehmerInnen auszähle?
by SoSci Survey (305k points)
Danke für das detailleirte Feedback - damit können wir arbeiten!

> Meinen Sie, dass ich, wenn die Umfrage im Feld ist, die Häufigkeiten immer wieder downloaden soll und dann bei allen Fällen, die als "FINISHED" gekennzeichnet sind, für jede Quotengruppe die Anzahl der TeilnehmerInnen auszähle?

In modernen akademischen Umgebungen (wo ich Sie jetzt verortet hätte) wird in aller Regel R eingesetzt. In SoSci Survey kann man einen API-Link erzeugen, sodass die Daten direkt aus R abgerufen werden können.

Man kann sich also in R ein kleines Script bauen mit der API-Zeile in Zeile 1 und folgender zweiten Zeile:

table(ds$IQ01_01, ds$FINISHED);

Und wenn man das Script laufen lässt, bekommt man jeweils die ganz aktuellen Quoten.

In SPSS und anderen Programmen kann man natürlich auch Kreuztabellen erstellen, aber dorthin muss man die Daten meist erst manuell herunterladen. Auf dem Pro-Server gibt es noch die Online-Auswertung, aber auch die wird Ihnen hier erstmal nicht so viel weiterhelfen.

Für Umgebungen, wo man häufig quoten braucht, kann man sich auch einen zusätzkichen Fragebogen anlegen, der einfach nur mittels statistic() die Quoten abruft und anzeigt. Aber der Aufwand lohnt sich in der Regel nur, wenn man die Quoten wirklich oft braucht. Wie gesagt: Für den schnellen Hausgebrauch ist R das Mittel der Wahl.
by s209160 (125 points)
Herzlichen Dank für die Info! Genau ich würde mir R arbeiten.

Nun ist mir leider noch aufgefallen, dass im Fragebogen auch die Fälle als "finished" markiert werden, die ich davor outgescreent habe. Ich hätte nun versucht vor meinen Quotierungscode folgenden Code zu stellen:
$finished = statistic('count', 'LASTPAGE', 24);

Leider werden aber dennoch alle Fälle als finished gezählt (auch die vor Seite 24 outgescrennten wurden)

Nun stellt sich mir die Frage:
1) Wie ändere ich das richtig ab, sodass wirklich nur Fälle gezählt werden, die Seite 24 erreicht haben?

2) Welche Auswirkungen haben solche ungültigen Fälle für meine Quotenzählung? Meine interne variable kontrolliert meines Wissens nach nicht, welche Fälle schlussendlich gültig sind - gibt es hier einen Workaround?

Herzlichen Dank schon einmal für die Antwort!
by SoSci Survey (305k points)
> Leider werden aber dennoch alle Fälle als finished gezählt (auch die vor Seite 24 outgescrennten wurden)

Nachdem Sie die IQ01_01 nur in den Fällen via put() setzen, die nicht rausgeworfen werden, sollte das kein Problem sein, oder?

Sprich: Ihr Code solte eigentlich dafür sorgen, dass IQ01_01 leer bleibt, wenn ein Fall wegen Screenout oder Quotenstopp abgewiesen wurde.
by s209160 (125 points)
Hab es eben noch einmal versucht. Es funktioniert doch! Herzlichen Dank für die ganze Hilfe!

Willkommen im Online-Support von SoSci Survey.

Hier bekommen Sie schnelle und fundierte Antworten von anderen Projektleitern und direkt von SoSci Survey.

→ Eine Frage stellen


Welcome to the SoSci Survey online support.

Simply ask a question to quickly get answers from other professionals, and directly from SoSci Survey.

→ Ask a Question

...