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

Hallo zusammen,

schonmal vielen Dank im Voraus für die Hilfe zu meiner Frage.

Ich habe anhand der Quotierung mittels statistic() demographische Quoten eingeführt, die beim testen mit zB Quote auf 0 setzen funktioniert haben und dann anhand des Quotafull Redirects aussortiert wurden.
Beim Launch des Fragebogens wurden die Quoten allerdings überschritten und die Quotafull Links haben haben nicht gegriffen, weshalb meine Teilnehmeranzahl und Quoten nun überfüllt sind.
Woran kann es liegen, dass die Quoten nicht gegriffen haben?

Hier ein Beispiel des PHP Codes:

$quotaGender = [ 1 => 836, // Frauen 2 => 814, // Männer 3 => 28 // Divers ];

$quotaAge = [ 1 => 346, // 270 Personen in Altersgruppe 1 (18-29 Jahre) 2 => 280, // 210 Personen in Altersgruppe 2 (30-39 Jahre) 3 => 412, // 300 Personen in Altersgruppe 3 (40-49 Jahre) 4 => 346, // 255 Personen in Altersgruppe 4 (50-59 Jahre) 5 => 264 // 195 Personen in Altersgruppe 5 (60-69 Jahre) ];

$quotaRegion = [ 1 => 215, // BaWue 2 => 264, // Bayern 3 => 65, // Berlin 4 => 50, // Brandenburg 5 => 17, // Bremen 6 => 33, // Hamburg 7 => 120, // Hessen 8 => 33, // MeckPom 9 => 165, // NiederSachs 10 => 363, // NRW 11 => 83, // Rheinland-P 12 => 17, // Saarland 13 => 82, // Sachsen 14 => 49, // SachsenAnhalt 15 => 66, // SchleswigHol 16 => 49 // Thüringen ];

// Geschlecht wird direkt ausgelesen
$gender = value('SO02');
// Das Alter wird umkodiert
$age = value('age');

if ($age <= 29) {
$ageGroup = 1;
} elseif ($age <= 39) {
$ageGroup = 2;
} elseif ($age <= 49) {
$ageGroup = 3;
} elseif ($age <= 59) {
$ageGroup = 4;
} elseif ($age <= 99) {
$ageGroup = 5;
} else {
$ageGroup = 6;
}

// Region wird direkt ausgelesen
$region = value('SO03');

// Abruf der vorliegenden Fälle für diese Merkmalsausprägung
$casesGender = statistic('count', 'SO17_01', $gender);
$casesAge = statistic('count', 'SO18_01', $ageGroup);
$casesRegion = statistic('count', 'SO19_01', $region);

// Screenout
if (!array_key_exists($gender, $quotaGender) || !array_key_exists($ageGroup, $quotaAge) || !array_key_exists($region, $quotaRegion)) {
redirect('https://survey.maximiles.com/quotasfull?p=147816_487548d3&m=%reference%');
}

// Auslesen der Quoten für die angegeben Merkmale
$maxPerGender = $quotaGender[$gender];
$maxPerAge = $quotaAge[$ageGroup];
$maxPerRegion = $quotaRegion[$region];

// Quotenstopp
if (($casesGender >= $maxPerGender) || ($casesAge >= $maxPerAge) || ($casesRegion >= $maxPerRegion)) {
redirect('https://survey.maximiles.com/quotasfull?p=147816_487548d3&m=%reference%');
}

1 Answer

0 votes
ago by SoSci Survey (356k points)

Für neuere Fragebögen sollten Sie unbdeingt den Quoten-Baustein verwenden: Quotierung.

Woran kann es liegen, dass die Quoten nicht gegriffen haben?

Um diese Frage zu beantworten, müssten Sie bitte den Fragebogen einmal im Debug-Modus starten, eine überfüllte Gruppe auswählen und die Debug-Informationen posten, welche auf der Seite mit dem Quotencheck angezeigt werden.

Es ist hilfreich, wenn Sie die Zählung auch nochmal explizit ausgeben lassen, indem Sie weitere Zeilen im PHP-Code ergänzen:

debug($casesGender);
debug($casesAge);
debug($casesRegion);
debug($gender);
debug($quotaGender);
debug($ageGroup);
debug($quotaAge);
debug($region);
debug($quotaRegion);

Bitte kontrollieren Sie auch, ob die Variablen SO17_01, SO18_01 und SO19_01 korrekt befüllt wurden im Datensatz. Diese verwenden Sie für die Quotierung.

ago by s299286 (110 points)
Danke für die schnelle Antwort.


Anbei ein Beispiel für eine Debug Information: Die Gruppe Education = 8 sollte eigentlich voll sein, aber es scheint, als würde der Code übersprungen werden:

[Verarbeitung]    Erstelle Seite 6 in Fragebogen base04
[Information]    value("education") = 8
[Information]    Die Seite zeigt keine Inhalte, automatisch weiter mit Seite Nr. 7
[Verarbeitung]    Erstelle Seite 7 in Fragebogen base04
[Inhalt]    Erstelle Frage SO07
[Inhalt]    Erstelle Frage SO09


Die internen Variablen SO17_01, SO18_01 und SO19_01 scheinen nicht befüllt worden zu sein. Was kann da der Fehler sein?
ago by SoSci Survey (356k points)
> es scheint, als würde der Code übersprungen werden:

Auf welcher Seite steht der PHP-Code von oben denn und was ist ggf. noch weiter oben auf der Seite? Haben Sie die debug()-Zeilen eingefügt?

> Die internen Variablen SO17_01, SO18_01 und SO19_01 scheinen nicht befüllt worden zu sein.

Dann kann Ihr Code nicht funktionieren. Es gibt bei der PHP-Umsetzung von Quoten zwei Varianten:

1. Variante A zählt direkt abgefragt Variable, man kann dann aber nicht Umkodieren und hat nur die Auswahl, entweder alle Fälle für die Quote zu zählen oder nur abgeschlossene Fälle (FINISHED=1).

2. Variante B benötigt zwei Codes. Einen Code für die Quotierung und einen zweiten Code an späterer Stelle im Fragebogen, welcher die Merkmale für die Quotierung in interne Variablen kopiert/schreibt. Dies erlaubt eine feine Steuerung, wer als gültiger Fall für die Quote gezählt wird und wer nicht.

Nachdem der Code oben zur Variante B zu passen scheint, wäre meine Vermutung, dass der zweite Teil fehlt, welcher die internen Variablen schreiben müsste.

Falls Sie noch weiter Daten erheben, wäre meine Empfehlung, dass Sie auf den Quotierungs-Baustein umstellen. Dort können Sie auch die bisherigen Quoten eintragen.
ago by s299286 (110 points)
Vielen Dank!
es scheint, als wäre Variante B der Fall und das argument put() wurde vergessen um die internen Variablen zu befüllen. In der Anleitung steht, dass man dieses auf die Seite vor dem Complete Redirect einfügen kann. Wir möchten Personen, aber direkt nach Eingabe der demographischen Variablen ausscreenen, um zu vermeiden, dass sie den Fragebogen komplett ausfüllen.
Gibt es eine Möglichkeit mit Variante B und den 2 Codeblöcken, diese auf zwei hintereinander folgenden Seiten einzufügen? Oder geht es nur am Ende des Fragebogens?
ago by SoSci Survey (356k points)
> Wir möchten Personen, aber direkt nach Eingabe der demographischen Variablen ausscreenen

Dafür ist der erste PHP-Code mit statistic() zuständig, den Sie ja bereits haben. Dieser bleibt vorne stehen.

Hinten im Fragebogen (z.B. vor dem complete-Redirect) benötigen Sie dann den anderen Code, um die internen Variablen zu befüllen, damit diese für die Quote gezählt werden.

Den neuen Quoten-Baustein haben wir entwickelt, weil sich die Arbeit mit PHP-Codes, statistic() und internen Variablen leider als kompliziert und damit als fehleranfällig erwiesen hat.

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

...