0 votes
in SoSci Survey (dt.) by s258422 (115 points)
edited by s258422

Bei der Quotierung nach Geschlecht, Alter, Bildung und Wahlverhalten bekomme ich Fehlermeldungen.
Folgende PHP-Codes habe ich nach der Quotierung auf einer separaten Seite eingefügt:
Interne Variablen für die 4 Merkmale wurden erstellt.

PHP-Code 1:

$quotaAge = [
  1 => 120,  // 120 Personen in Altersgruppe 1 (18-29 Jahre)
  2 => 95,  // 95 Personen in Altersgruppe 2 (30-39 Jahre)
  3 => 100,   // 100 Personen in Altersgruppe 3 (40-49 Jahre)
  4 => 110,   // 110 Personen in Altersgruppe 4 (50-64 Jahre)
  5 => 75   // 75 Personen in Altersgruppe 5 (65-75 Jahre)
];
$quotaGender = [
  1 => 250,  // 250 Frauen (Code 1)
  2 => 250  // 250 Männer (Code 2)
];
$quotaPolOrient = [
   3 => 140,  // 140 FPÖ (Code 3)
   2 => 115,  // 115 SPÖ (Code 2)
   1 => 110,  // 110 ÖVP (Code 1)
   4 => 53,   // 53 Die Grünen (Code 4)
   5 => 48,  // 48 Neos (Code 5)
   6 => 35  //  Andere  (Code 6)
];
$quotaEducation = [
  1 => 85,  // 85 Geringe Bildung (Code 1)
  2 => 113,  // 113 Lehre (Code 2)
  3 => 120,  // 120 BMS (Code 3)
  4 => 100,  // 100 AHS/BHS (Code 4)
  5 => 80  // 80 Hochschule (Code 5)
];

PHP-Code 2:

// Geschlecht wird direkt ausgelesen
$Gender = value('B002');
// Bildung wird direkt ausgelesen
$Education = value('B003');
// PolOrient wird direkt ausgelesen
$PolOrient = value('B006');
// Das Alter wird umkodiert
$Age = value('B004');
if ($Age < 18) {
  $AgeGroup = 1;
} elseif ($Age <= 30) {
  $AgeGroup = 2;
} elseif ($Age <= 40) {
  $AgeGroup = 3;
} elseif ($Age <= 50) {
  $AgeGroup = 4;
} elseif ($Age <= 65) {
  $AgeGroup = 5;
}

PHP Code 3:

// Abruf der vorliegenden Fälle für diese Merkmalsausprägung
$casesAge    = statistic('count', 'B010_01', $AgeGroup);
$casesGender = statistic('count', 'B008_01', $Gender);
$casesEducation = statistic('count', 'B009_01', $Education);
$casesPolOrient = statistic('count', 'B011_01', $PolOrient);
 
// Screenout
if (!array_key_exists($AgeGroup, $quotaAge) || !array_key_exists($Gender, $quotaGender) || !array_key_exists($Education, $quotaEducation) || !array_key_exists($PolOrient, $quotaPolOrient)) {
  redirect('https://survey.maximiles.com/quotasfull?p=110989_82167f6e&m=%reference%');
}
 
// Auslesen der Quoten für die angegeben Merkmale
$maxPerAge    = $quotaAge[$AgeGroup];
$maxPerGender = $quotaGender[$Gender];
$maxPerEducation = $quotaEducation[$Education];
$maxPerPolOrient = $quotaPolOrient[$PolOrient];
 
// Quotenstopp
if (($casesAge >= $maxPerAge) || ($casesGender >= $maxPerGender) || ($casesEducation >= $maxPerEducation) || ($casesPolOrient >= $maxPerPolOrient)) {
  redirect('https://survey.maximiles.com/quotasfull?p=110989_cc99914b&m=%reference%');
}

Und hier die Fehlermeldung:

1 Answer

–1 vote
by SoSci Survey (327k points)
edited by SoSci Survey

Nun, Sie verwenden im zweiten PHP-Code die Variable $AgeGroup, definieren diese vorher aber nirgends.

Wenn Sie die Kodierungen aus B004 direkt verwenden möchten, dann tauschen Sie $AgeGroup gegen die Variable '$Age' aus, die Sie ja definieren.

Im dritten PHP-Code verwenden Sie gleich in der ersten Zeile eine Variable $Gender, welche in diesem PHP-Code vorab nirgends definiert wurde. Bitte beachten Sie, dass PHP-Variablen stets nur in dem Block gültig sind, in welchem Sie sie definieren: PHP-Variablen

by s258422 (115 points)
Vielen Dank für die Rückmeldung! Ich habe mich recht "sklavisch" an das Manual gehalten: https://www.soscisurvey.de/help/doku.php/de:survey:quota und Ihr Vorschlag würde die Fehlermeldung bzgl. der fehlenden Definierungen der anderen Variablen nicht beheben. Daher muss es an etwas anderem liegen?
by SoSci Survey (327k points)
Ich habe gerade noch die Erklärung zur nächsten Variable $Gender in meiner Antwort ergänzt.

In der Anleitung wird die $ageGroup Variable durch einen IF-Filter aus $age (offene Antwort) berechnet. Deshalb ist sie dort definiert.

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

...