0 votes
ago 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
ago by SoSci Survey (328k 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?

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

...