Liebes SoSci Survey Team,
da mein Fragebogen über einen externen Panel-Service angeboten werden soll, möchte ich zwei Quotierungen vornehmen und in den Fragebogen einbinden.
Kurz zur Erklärung: ich habe einen Anfangsfragebogen, in welchem die zwei soziodemografischen Fragen nach Alter und Geschlecht abgefragt werden. Anschließend werden die Teilnehmenden randomisiert auf vier Fragebogenversionen verteilt.
Auf der Fragebogenseite nach der Erfassung des Alters und des Geschlechts werden folgende PHP Codes angewendet:
Nr. 1:
$quotaAge = [
2 => 80, // 80 Personen in Altersgruppe 2 (18-30 Jahre)
3 => 80, // 80Personen in Altersgruppe 3 (31-50 Jahre)
4 => 80 // 50 Personen in Altersgruppe 4 (51-68 Jahre)
];
$quotaGender = [
1 => 105, // 105 Frauen (Code 1)
2 => 105 // 105 Männer (Code 2)
];
Nr. 2:
// Geschlecht wird direkt ausgelesen
$gender = value('SD02');
// Das Alter wird umkodiert
$age = value('SD03_01');
if ($age < 18) {
$ageGroup = 1;
} elseif ($age <= 30) {
$ageGroup = 2;
} elseif ($age <= 50) {
$ageGroup = 3;
} elseif ($age <= 68) {
$ageGroup = 4;
} else {
$ageGroup = 5;
}
// Abruf der vorliegenden Fälle für diese Merkmalsausprägung
$casesAge = statistic('count', 'SD04_01', $ageGroup);
$casesGender = statistic('count', 'SD04_02', $gender);
// Screenout
if (!array_key_exists($ageGroup, $quotaAge) || !array_key_exists($gender, $quotaGender)) {
redirect('https://survey.maximiles.com/screenout?p=90538_28831349&m=%reference%');
}
// Auslesen der Quoten für die angegeben Merkmale
$maxPerAge = $quotaAge[$ageGroup];
$maxPerGender = $quotaGender[$gender];
// Quotenstopp
if (($casesAge >= $maxPerAge) || ($casesGender >= $maxPerGender)) {
redirect('https://survey.maximiles.com/quotasfull?p=90538_5d084fdd&m=%reference%');
}
Außerdem ist auf derselben Seite noch der PHP Code zur Randomisierung der Fragebogenversion.
Auf den vorletzten Seiten des randomisierten (weitergeleiteten) Fragebogens habe ich nun in jeder Fragebogenversion folgende zwei PHP Codes angewendet:
Nr. 1
// Geschlecht wird direkt ausgelesen
$gender = value('SD02');
// Das Alter wird umkodiert
$age = value('SD03_01');
if ($age < 18) {
$ageGroup = 1;
} elseif ($age <= 30) {
$ageGroup = 2;
} elseif ($age <= 50) {
$ageGroup = 3;
} elseif ($age <= 68) {
$ageGroup = 4;
} else {
$ageGroup = 5;
}
put('SD04_01', $ageGroup);
put('SD04_02', $gender);
Nr. 2
redirect('https://survey.maximiles.com/complete?p=90538_97bbc2a6&m=%reference%');
Weiterhin habe ich im Befragungsprojekt die internen Variablen "SD04_01" und "SD04_02" angelegt.
Das Problem ist, dass es nicht zu funktionieren scheint. Ich habe mich stark an der Anleitung bei SoSci Survey orientiert, aber es scheint dennoch nicht zu klappen. Könnte dies an der Weiterleitung zu den Fragebogenversionen liegen? Oder ist der Code fehlerhaft?
Wenn ich die ersten beiden PHP Codes in einem Code zusammenfasse, dann funktioniert der Screenout zwar, wird allerdings bei jeder Eingabe durchgeführt, sodass niemand den Fragebogen ausfüllen kann.
Ich habe auch den Debug-Modus benutzt und dort auch keine Fehler finden können.
Vielen Dank im Voraus für Ihre Hilfe!