0 votes
in SoSci Survey (dt.) by s139925 (185 points)
edited by SoSci Survey

Liebes SoSci Survey Team,

da mein Fragebogen über einen externen Panel-Service angeboten werden soll, möchte ich zwei Quotierungen vornehmen und in den Fragebogen einbinden.

Kurz zur Erklärung: ich habe einen Anfangsfragebogen, in welchem die zwei soziodemografischen Fragen nach Alter und Geschlecht abgefragt werden. Anschließend werden die Teilnehmenden randomisiert auf vier Fragebogenversionen verteilt.

Auf der Fragebogenseite nach der Erfassung des Alters und des Geschlechts werden folgende PHP Codes angewendet:

Nr. 1:

 $quotaAge = [
  2 => 80,  //  80 Personen in Altersgruppe 2 (18-30 Jahre)
  3 => 80,  // 80Personen in Altersgruppe 3 (31-50 Jahre)
  4 => 80   // 50 Personen in Altersgruppe 4 (51-68 Jahre)
];
$quotaGender = [
  1 => 105,  // 105 Frauen (Code 1)
  2 => 105   // 105 Männer (Code 2)
];

Nr. 2:

// Geschlecht wird direkt ausgelesen
$gender = value('SD02');
// Das Alter wird umkodiert
$age = value('SD03_01');
if ($age < 18) {
  $ageGroup = 1;
} elseif ($age <= 30) {
  $ageGroup = 2;
} elseif ($age <= 50) {
  $ageGroup = 3;
} elseif ($age <= 68) {
  $ageGroup = 4;
} else {
  $ageGroup = 5;
}

// Abruf der vorliegenden Fälle für diese Merkmalsausprägung
$casesAge    = statistic('count', 'SD04_01', $ageGroup);
$casesGender = statistic('count', 'SD04_02', $gender);
 
// Screenout
if (!array_key_exists($ageGroup, $quotaAge) || !array_key_exists($gender, $quotaGender)) {
  redirect('https://survey.maximiles.com/screenout?p=90538_28831349&m=%reference%');
}
// Auslesen der Quoten für die angegeben Merkmale
$maxPerAge    = $quotaAge[$ageGroup];
$maxPerGender = $quotaGender[$gender];
 
// Quotenstopp
if (($casesAge >= $maxPerAge) || ($casesGender >= $maxPerGender)) {
  redirect('https://survey.maximiles.com/quotasfull?p=90538_5d084fdd&m=%reference%');
}

Außerdem ist auf derselben Seite noch der PHP Code zur Randomisierung der Fragebogenversion.

Auf den vorletzten Seiten des randomisierten (weitergeleiteten) Fragebogens habe ich nun in jeder Fragebogenversion folgende zwei PHP Codes angewendet:

Nr. 1

// Geschlecht wird direkt ausgelesen
$gender = value('SD02');
// Das Alter wird umkodiert
$age = value('SD03_01');
if ($age < 18) {
  $ageGroup = 1;
} elseif ($age <= 30) {
  $ageGroup = 2;
} elseif ($age <= 50) {
  $ageGroup = 3;
} elseif ($age <= 68) {
  $ageGroup = 4;
} else {
  $ageGroup = 5;
}


put('SD04_01', $ageGroup);
put('SD04_02', $gender);

Nr. 2

redirect('https://survey.maximiles.com/complete?p=90538_97bbc2a6&m=%reference%');

Weiterhin habe ich im Befragungsprojekt die internen Variablen "SD04_01" und "SD04_02" angelegt.
Das Problem ist, dass es nicht zu funktionieren scheint. Ich habe mich stark an der Anleitung bei SoSci Survey orientiert, aber es scheint dennoch nicht zu klappen. Könnte dies an der Weiterleitung zu den Fragebogenversionen liegen? Oder ist der Code fehlerhaft?

Wenn ich die ersten beiden PHP Codes in einem Code zusammenfasse, dann funktioniert der Screenout zwar, wird allerdings bei jeder Eingabe durchgeführt, sodass niemand den Fragebogen ausfüllen kann.

Ich habe auch den Debug-Modus benutzt und dort auch keine Fehler finden können.

Vielen Dank im Voraus für Ihre Hilfe!

by SoSci Survey (302k points)
Die Definition der Arrays (bei Ihnen der erste PHP-Code) und die Verwendung derselben (der zweite PHP-Code, "Nr. 2") müssen im selben PHP-Code-Block stehen. Ist dies gewährleistet?

Haben Sie bereits die Schritte zur Fehlersuche in der Quotierungs-Anleitung durchgeführt? Was wird dabei angezeigt?
https://www.soscisurvey.de/help/doku.php/de:survey:quota#fehlersuche

1 Answer

0 votes
by s139925 (185 points)

Vielen Dank für Ihre Hilfe! Ich hatte die PHP-Codes nicht in einem gemeinsamen Block und die Bezeichnung der internen Variable wohl falsch angegeben, was ich durch die Fehlersuche herausfinden konnte.
Nun funktioniert alles.

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

...