Hallo liebes Sosci Survey Team
Für die Datenerhebung über einen Panelanbieter habe ich eine Quotierung (Alter, Geschlecht, Bildung) im Fragebogen eingefügt. Zuvor habe ich (auf einer separaten Seite, Q1) ein Screenout-Redirect beim Alter eingefügt, um unter 18 Jährige oder über 74 Jährige auszuschliessen. Dieser Screenout funktioniert auch, wenn ich z.B. beim Alter 16 oder 80 Jahre eingebe. Gebe ich aber ein Alter zwischen 18-74 Jahre ein, erfolgt immer ein Quota-Full Redirect zum Panelanbieter.
In der Debug-Information (über die Fehlersuche bei Quotierung) habe ich gesehen, dass die Anzahl Fälle bei Alter, Geschlecht und Bildung gezählt werden und die angegeben Quoten übersteigt, weshalb der Redirect ausgelöst wird. Wie kann ich das umgehen (bzw. zurücksetzen?), damit ich den Fragebogen weiter testen kann? Ich möchte allerdings nicht meine bisher erhobenen Daten oder Anmerkungen aus dem Pretest löschen.
Oder sollte die Quotierung funktionieren, sobald der Fragebogen über den Panelanbieter verschickt wird?
Auf jeden Fall vielen Dank für jegliche Tipps und Hinweise!
Hier noch mein Code, evtl. habe ich ja da etwas falsch gemacht...?
Seite 1 - Q1
// Screenout Alter
$alter = value('SD02_01');
if ((value('SD02_01') < 18) or (value('SD02_01') > 74)) {
setNextPage('repeat');
redirect('XXXXXXscreenout-redirectXXXXXXXX', true);
}
Seite 2 - Q2
$quotaGender = [
'1' => 225, // 225 Frauen kodiert mit 1
'2' => 225 // 225 Männer kodiert mit 2
];
// Geschlecht wird direkt ausgelesen
$gender = value('SD01');
$quotaAge = [
'1' => 90, // 90 Personen in Altersgruppe 1 (18-29 Jahre)
'2' => 90, // 90 Personen in Altersgruppe 2 (30-39 Jahre)
'3' => 90, // 90 Personen in Altersgruppe 3 (40-49 Jahre)
'4' => 90, // 90 Personen in Altersgruppe 4 (50-59 Jahre)
'5' => 90 // 90 Personen in Altersgruppe 5 (60-74 Jahre)
];
// Alter wird umkodiert
$age = value('SD02_01');
if ($age < 18) {
$ageGroup = 0;
} elseif ($age <= 29) {
$ageGroup = 1;
} elseif ($age <= 39) {
$ageGroup = 2;
} elseif ($age <= 49) {
$ageGroup = 3;
} elseif ($age <= 59) {
$ageGroup = 4;
} else {
$ageGroup = 5;
}
$quotaEdu = [
'1' => 150, // 150 Personen in Bildungsgruppe 1 (niedrig)
'2' => 150, // 150 Personen in Bildungsgruppe 2 (mittel)
'3' => 150 // 150 Personen in Bildungsgruppe 3 (hoch)
];
// Bildung wird umkodiert
$edu = value('SD10');
if ($edu <= 2) {
$eduGroup = 1;
} elseif ($edu <= 5) {
$eduGroup = 2;
} else {
$eduGroup = 3;
}
// Abruf der vorliegenden Fälle für diese Merkmalsausprägung
$casesGender = statistic('count', 'IV05_01', $gender);
$casesAge = statistic('count', 'IV04_01', $ageGroup);
$casesEdu = statistic('count', 'IV06_01', $eduGroup);
// Screenout
if (!array_key_exists($gender, $quotaGender) || !array_key_exists($ageGroup, $quotaAge) || !array_key_exists($eduGroup, $quotaEdu)) {
redirect('XXXXXXXscreenout-redirectXXXXXXX', true);
}
// Auslesen der Quoten für die angegebenen Merkmale
$maxPerGender = $quotaGender[$gender];
$maxPerAge = $quotaAge[$ageGroup];
$maxPerEdu = $quotaEdu[$eduGroup];
// Quotenstopp
if (($casesGender >= $maxPerGender) || ($casesAge >= $maxPerAge) || ($casesEdu >= $maxPerEdu)) {
redirect('XXXXquotafull-redirectXXXXX', true);
}