Hallo liebes Sosci-Survey Team,
ich habe eine Frage zum Quotenstopp. Ich habe eine Quote für Alter und Geschlecht. Nach Abfrage des Alters und des Geschlechts habe ich folgenden PHP auf die nächste Seite gesetzt:
// insgesamt sind es 1200 Probanden für die Quote Alter
$quotaAlter = [
1 => 444, // 444 aus Altersgruppe 1 (1980-1989)
2 => 456, // 456 aus Altersgruppe 2 (1990-1999)
3 => 300, // 300 aus Altersgruppe 3 (2000-2007)
];
// bei der Quote Geschlecht ist eine Abweichung von 2,5% möglich
//z.B. 615 (52,5%) weibliche und 585 (47,5%) männliche Probanden sein.
$quotaGeschlecht = [
1 => 615, // weiblich --> Puffer von 15 Probanden eingebaut um Abweichung von 50% um 2,5% zu ermöglichen
2 => 615, // männlich --> selber Puffer wie bei weiblich
];
// Das Alter wird umkodiert
$Alter = value('SD04_01');
if ($Alter < 1990) {
$Altersgruppe = 1;
} elseif ($Alter < 2000) {
$Altersgruppe = 2;
} elseif ($Alter < 2008) {
$Altersgruppe = 3;
}
// Geschlecht wird direkt ausgelesen
$Geschlecht = value('SD01');
// Abruf der vorliegenden Fälle für diese Merkmalsausprägung
$casesAlter = statistic('count', 'Q001_01', $Altersgruppe);
$casesGeschlecht = statistic('count', 'Q002_01', $Geschlecht);
// Auslesen der Quoten für die angegebenen Merkmale
$maxPerAlter = $quotaAlter[$Altersgruppe];
$maxPerGeschlecht = $quotaGeschlecht[$Geschlecht];
// Quotenstopp
if (($casesAlter >= $maxPerAlter) || ($casesGeschlecht >= $maxPerGeschlecht)) {
redirect('https://XXXXXquotafull&i_survey=%reference%');
}
Am Ende des Fragebogens habe ich folgenden Code:
// Das Alter wird umkodiert
$Alter = value('SD04_01');
if ($Alter < 1990) {
$Altersgruppe = 1;
} elseif ($Alter < 2000) {
$Altersgruppe = 2;
} elseif ($Alter < 2008) {
$Altersgruppe = 3;
}
// Geschlecht wird direkt ausgelesen
$Geschlecht = value('SD01');
put('Q001_01', $Altersgruppe);
put('Q002_01', $Geschlecht);
redirect ('abcde...complete')
Leider werden die internen Variablen für die Quoten auch befüllt, wenn die Proband*innen zwischenzeitlich aus Qualitätsgründen rausgeworfen werden.
Wie stelle ich das ein, dass die Quote nur befüllt wird, wenn der Fragebogen vollständig abgeschlossen wurde?