Hallo!
Ich will eine Quotensteuerung (Alter, Geschlecht, Bildung) in meiner Befragung umsetzen und habe den entsprechenden php-Code eingebaut. Aktuell haben wir bereits 216 vollständig bearbeitete, verwendbare Fälle gesammelt. Um zu überprüfen, ob die Quotensteuerung funktioniert, lasse ich zählen, wie viele Fälle bereits bearbeitet wurden und mir die Zahl in einer internen Variable ausgeben (dort müsste m. E. die Zahl 216 auftauchen). Wenn ich nun als 217. Person an der Befragung teilnehme (nicht als Admin, sondern als "richtiges" Interview), dann werden allerdings bereits 246 Interviews gezählt (und mir in der internen Variable angegeben). SoSci scheint also irgendwo weitere 30 Fälle/Interviews zu zählen, die mir jedoch nicht vorliegen (es liegen genau 216 Fälle vor, alle nicht abgeschlossenen Interviews, Prestest-/Admin-Durchgänge ...) sind gelöscht. Ich verstehe nicht, woher diese +30 Fälle stammen. Doch durch diese falsche Zählung wird die Quotensteuerung beeinflusst (die jeweiligen Gruppen werden geschlossen, obwohl die Quoten noch nicht ganz erfüllt sind). Haben Sie eine Idee, woran die falsche Zählung liegen könnte?
Vielen Dank für die Hilfe!
Hier sende ich noch den implementierten Code:
Teil 1 (Seite nach der Abfrage der Soziodemogr.)
$quotaAge = [
2 => 216, // 216 Personen in Altersgruppe 2 (18-29 Jahre)
3 => 216, // 216 Personen in Altersgruppe 3 (30-39 Jahre)
4 => 204, // 204 Personen in Altersgruppe 4 (40-49 Jahre)
5 => 264, // 264 Personen in Altersgruppe 5 (50-59 Jahre)
6 => 300 // 300 Personen in Altersgruppe 6 (60+ Jahre)
];
$quotaGender = [
1 => 588, // 588 Männer (Code 1)
2 => 612, // 612 Frauen (Code 2)
3 => 999, // für die Angabe divers muss keine Quote erfüllt werden (Code 3)
4 => 999 // für die Angabe Keine Angabe muss keine Quote erfüllt werden (Code -1)
];
$quotaEducation = [
1 => 156, // 156 Personen mit Bildung low (Code 1, 2)
2 => 708, // 708 Personen mit Bildung middle (Code 3, 4, 5, 6)
3 => 336, // 336 Personen mit Bildung high (Code 7, 8)
4 => 999 // für die Angabe Keine Angabe muss keine Quote erfüllt werden (Code -1)
];
// Geschlecht wird umkodiert
$gender = value('SD02');
if ($gender == 1) {
$genderGroup = 1;
} elseif ($gender == 2) {
$genderGroup = 2;
} elseif ($gender == 3) {
$genderGroup = 3;
} elseif ($gender == -1) {
$genderGroup = 4;
}
// Alter wird umkodiert
$age = value('SD01_01');
if ($age < 18) {
$ageGroup = 1;
} elseif ($age <= 29) {
$ageGroup = 2;
} elseif ($age <= 39) {
$ageGroup = 3;
} elseif ($age <= 49) {
$ageGroup = 4;
} elseif ($age <= 59) {
$ageGroup = 5;
} else {
$ageGroup = 6;
}
// Bildung wird umkodiert
$education = value('SD07');
if (($education == 1) || ($education == 2)) {
$educationGroup = 1;
} elseif (($education == 3) || ($education == 4) || ($education == 5) || ($education == 6)) {
$educationGroup = 2;
} elseif (($education == 7) || ($education == 8)) {
$educationGroup = 3;
} elseif ($education == -1) {
$educationGroup = 4;
}
// Abruf der vorliegenden Fälle für diese Merkmalsausprägung
$casesAge = statistic('count', 'SD06_02', $ageGroup);
$casesGender = statistic('count', 'SD06_01', $genderGroup);
$casesEducation = statistic('count', 'SD06_03', $educationGroup);
// Screenout
if (!array_key_exists($ageGroup, $quotaAge)) {
redirect('https://dkr1.ssisurveys.com/projects/end?rst=2&psid=%reference%');
}
// Auslesen der Quoten für die angegeben Merkmale
$maxPerAge = $quotaAge[$ageGroup];
$maxPerGender = $quotaGender[$genderGroup];
$maxPerEducation = $quotaEducation[$educationGroup];
// Quotenstopp
if (($casesAge >= $maxPerAge) || ($casesGender >= $maxPerGender) || ($casesEducation >= $maxPerEducation)) {
redirect('https://dkr1.ssisurveys.com/projects/end?rst=3&psid=%reference%');
}
Teil 2 (letzte Seite)
// Geschlecht wird umkodiert
$gender = value('SD02');
if ($gender == 1) {
$genderGroup = 1;
} elseif ($gender == 2) {
$genderGroup = 2;
} elseif ($gender == 3) {
$genderGroup = 3;
} elseif ($gender == -1) {
$genderGroup = 4;
}
// Alter wird umkodiert
$age = value('SD01_01');
if ($age < 18) {
$ageGroup = 1;
} elseif ($age <= 29) {
$ageGroup = 2;
} elseif ($age <= 39) {
$ageGroup = 3;
} elseif ($age <= 49) {
$ageGroup = 4;
} elseif ($age <= 59) {
$ageGroup = 5;
} else {
$ageGroup = 6;
}
// Bildung wird umkodiert
$education = value('SD07');
if (($education == 1) || ($education == 2)) {
$educationGroup = 1;
} elseif (($education == 3) || ($education == 4) || ($education == 5) || ($education == 6)) {
$educationGroup = 2;
} elseif (($education == 7) || ($education == 8)) {
$educationGroup = 3;
} elseif ($education == -1) {
$educationGroup = 4;
}
// Abruf der vorliegenden Fälle für diese Merkmalsausprägung
$casesAge = statistic('count', 'SD06_02', $ageGroup);
$casesGender = statistic('count', 'SD06_01', $genderGroup);
$casesEducation = statistic('count', 'SD06_03', $educationGroup);
$casesAgeGesamt = statistic('count', 'SD06_02');
put('SD06_01', $genderGroup);
put('SD06_02', $ageGroup);
put('SD06_03', $educationGroup);
put('SD06_04', $casesGender);
put('SD06_05', $casesAge);
put('SD06_06', $casesEducation);
put('SD06_07', $casesAgeGesamt);