0 votes
in SoSci Survey (dt.) by s247189 (150 points)

Hallo,

Ich habe eine unverbundene Quotierung (Alter, Geschlecht, Bildung) und habe die PHP-Codierung gemäss der Anleitung erstellt. Jedoch wird immer ein Quotas Full ausgelöst.

Hier mein Code:

$quotaAge = [
  1 => 12, // Personen in Altersgruppe 1 (18-25 Jahre)
  2 => 17, // Personen in Altersgruppe 2 (26-35 Jahre)
  3 => 16, // Personen in Altersgruppe 3 (36-45 Jahre)
  4 => 19, // Personen in Altersgruppe 4 (46-55 Jahre)
  5 => 19, // Personen in Altersgruppe 5 (56-65 Jahre)
  6 => 16  // Personen in Altersgruppe 6 (66-75 Jahre)
];

$quotaGender = [
  1 => 50,  // 50% Männer(Code 1)
  2 => 50  // 50% Frauen (Code 2)
];

$quotaEducation = [
  1 => 29,  // niedrig (Code 1)
  2 => 32,  // mittel (Code 2)
  3 => 39  // hoch (Code 3)
];

// Geschlecht & Alter wird direkt ausgelesen
$gender = value('gender');
$age= value('age');

// Education wird umkodiert
$education = value('education');
if ($education == 1) {
  $educationGroup = 1;
} elseif ($education <= 3) {
  $educationGroup = 2;
} elseif ($education <= 5) {
  $educationGroup = 3;
}

// Abruf der vorliegenden Fälle für diese Merkmalsausprägung
$casesAge    = statistic('count', 'age_int', $age);
$casesGender = statistic('count', 'gender_int', $gender);
$casesEducation = statistic('count', 'education_int', $educationGroup);
 
// Auslesen der Quoten für die angegeben Merkmale
$maxPerAge    = $quotaAge[$age];
$maxPerGender = $quotaGender[$gender];
$maxPerEducation = $quotaEducation[$educationGroup];
 
// Quotenstopp
if (($casesAge >= $maxPerAge) || ($casesGender >= $maxPerGender) || ($casesEducation >= $maxPerEducation)) {
  redirect('https://survey.maximiles.com/quotasfull?p=95910_d4ba826c&m=%reference%');
}

Könnten Sie mir hier weiterhelfen?
Ich würde mich über Lösungstipps freuen.

1 Answer

0 votes
by SoSci Survey (328k points)

Deaktivieren Sie einmal den Redirect...

if (($casesAge >= $maxPerAge) || ($casesGender >= $maxPerGender) || ($casesEducation >= $maxPerEducation)) {
  // redirect('https://survey.maximiles.com/quotasfull?p=95910_d4ba826c&m=%reference%');
}

Und zeigen Sie stattdessen die Werte an, auf die der Filter reagiert:

debug($casesAge);
debug($maxPerAge);
debug($casesGender);
debug($maxPerGender);
debug($casesEducation);
debug($maxPerEducation);

Damit sollte sich die Ursache des Quotenstopps schnell eingrenzen lassen.

Beachten Sie, dass statistic() im Debug-Modus auch die Fälle aus der Fragebogen-Entwicklung mitzählt. Später im "normalen" Interview ist das dann nicht mehr der Fall.

by s247189 (150 points)
Vielen Dank für die Antwort. Ich habe den Fehler entdeckt, hatte eine Variable falsch benannt...
Ich hätte aber noch eine Folgefrage: Personen, die beim Geschlecht "divers" angeben, werden automatisch ausgeschlossen, da sich die Quote nur auf Männer und Frauen bezieht. Kann ich mit einem Filter arbeiten, bei dem diese keiner Quotenprüfung unterzogen werden? Wenn ja, wo und wie baue ich den ein?
Gibt es eine Möglichkeit, Personen die "divers" angeben nicht auszuschließen, aber trotzdem die Quote unabhängig von deren Anteil zu steuern (deren Anteil wäre in diesem Fall egal).
by SoSci Survey (328k points)
Sie meinen, dass die restlichen Quotenmerkmale in dem Fall gar nicht gezählt werden? Ich schaue mal in Ihre neue Frage....

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

...