0 votes
in SoSci Survey (dt.) by s099762 (110 points)

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);     

1 Answer

0 votes
by SoSci Survey (330k points)

Wir haben auf www.soscisurvey.de kürzlich ein Update eingespielt, welches ein Caching-Problem löst, wodurch gelöschte Fälle noch in der Statistik auftauchten. Ich habe auf www.soscisurvey.de (oder arbeiten Sie auf einem anderen Server) nochmal alle Caches gelöscht ... tritt das Problem weiterhin auf?

dann werden allerdings bereits 246 Interviews gezählt

Ich sehe in Ihrem Code keine Ausgabe der Zählung. Woher stammt die Zahl genau?

by s099762 (110 points)
Vielen Dank für die Antwort! Wir arbeiten auf einem anderen Server, ich frage bei den Verantwortlichen dort nach.

Die Zählung ist fast ganz am Ende des Codes:
$casesAgeGesamt    = statistic('count', 'SD06_02');
Damit zähle ich, wie viele Fälle schon eine Angabe für das Alter gemacht haben (Pflichtangabe). Ich habe es auch mit Geschlecht und Bildung versucht und komme zum gleichen Ergebnis (Zählung von 246 Fällen, obwohl im Datensatz nur 216 Fälle vorliegen).
by SoSci Survey (330k points)
Wer Admin-Rechte für Ihren Server hat, soll einfach mal den Arbeitscache löschen (unter "Server-Wartung") und Sie können dann kontrollieren, ob die Zahlen anschließend stimmen. Die Korrektur das Caching-Problems wird in den nächsten Tagen mit Version 3.6.08 verfügbar.
by s099762 (110 points)
Das hat funktioniert, nun stimmt die Zählung - vielen Dank, das war wirklich eine große 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

...