0 votes
ago in SoSci Survey (dt.) by s313724 (125 points)
edited ago by s313724

Liebes SoSci-Team,

über den folgenden Code haben wir eine Quotierung mit Quotenstopp und Redirect-Link am Anfang des Fragebogens implementiert:

$quota = [ '2-1' => 22, '2-2' => 22, // 22 (10%) Personen pro Geschlecht für die Altersgruppe 2 '3-1' => 21, '3-2' => 21, // 21 (9,5%) Personen pro Geschlecht für die Altersgruppe 3 '4-1' => 20, '4-2' => 20, // 20 (9%) Personen pro Geschlecht für die Altersgruppe 4 '5-1' => 27, '5-2' => 27, // 27 (11,5%) Personen pro Geschlecht für die Altersgruppe 5 '6-1' => 22, '6-2' => 22, // 22 (10%) Personen pro Geschlecht für die Altersgruppe 6 ];

// Geschlecht wird direkt ausgelesen
$gender = value('DE02');
// Das Alter wird umkodiert
$age = value('DE01_01');
if ($age < 18) {
$ageGroup = 1;
} elseif ($age <= 30) {
$ageGroup = 2;
} elseif ($age <= 40) {
$ageGroup = 3;
} elseif ($age <= 50) {
$ageGroup = 4;
} elseif ($age <= 59) {
$ageGroup = 5;
} elseif ($age <= 69) {
$ageGroup = 6;
} else {
$ageGroup = 7;
}

// Definition einer Variable mit Altersgruppe und Geschlecht
$demGroup = $ageGroup.'-'.$gender;

// Speichern der Gruppenzugehörigkeit in der internen Variable PA01_01
put('PA01_01', $demGroup);

if (($gender != 1) && ($gender != 2)) {
goToPage('ASC');
}

// Abruf der vorliegenden Fälle für diese Merkmalsausprägung
$cases = statistic('count', 'PA01_01', $demGroup, 'LASTPAGE', 40);

// Screenout
if (!array_key_exists($demGroup, $quota)) {
redirect('https://survey.maximiles.com/quotasfull?p=143160_68c6f50a&m=%reference%');
}

// Auslesen der Quote für die demografische Gruppe
$maxPerGroup = $quota[$demGroup];

// Quotenstopp
if ($cases >= $maxPerGroup) {
redirect('https://survey.maximiles.com/quotasfull?p=143160_68c6f50a&m=%reference%');
}
__

Dabei habe ich bewusst beim Abruf der Fälle mit der jeweiligen Merkmalsausprägung ($cases) einen Filter eingebaut ('LASTPAGE', 40), damit nur diejenigen Fälle gezählt werden, die auch vollständig ausgefüllt haben. Wir hatten zunächst mehrere Pre-Launches, haben diese Fälle aber nachträglich aus dem Datensatz auf SoSci gelöscht, damit diese Fälle ebenfalls nicht in die Quote einbezogen werden. Aktuell sind unter Interviews also nur die relevanten Datensätze einbezogen. Dennoch werden die Quotenstopps aktuell schon aktiv und filtern Personen heraus, obwohl keine der Quoten bereits voll ist. Wir können uns das überhaupt nicht erklären. Wir haben über die Variable "PA01_01" in Excel genau kontrolliert, wie viele vollständige (und sogar unvollständige) Fälle pro Kategorie derzeit vorliegen. Dabei sollten die Quoten (sogar unter Einbezug der unvollständigen Fälle) noch nicht voll sein. Warum könnte diese Problem auftreten? Und wir können wir das lösen?

Vielen lieben Dank im Voraus!

1 Answer

0 votes
ago by SoSci Survey (337k points)
selected ago by s313724
 
Best answer

Sie haben folgende Zeile verwendet:

$cases = statistic('count', 'PA01_01', $demGroup, 'LASTPAGE', 40);

Dieser Code filtert aber keine (!) Fälle. Die letzten beiden Parameter werden einfach ignoriert. Ich denke, Sie wollten eigentlich schreiben:

statistic('filter', false, 'LASTPAGE==40');
$cases = statistic('count', 'PA01_01', $demGroup);

Meine offizielle Empfehlung wäre aber eigentlich, dass Sie das

put('PA01_01', $demGroup);

auf die vorletzte Seite des Fragebogens setzen (inkl. dem vorherigen Code) oder alternativ den Inhalt dieser Variable dort in eine andere Variable kopieren, z.B.

put('PA01_02', value('PA01_01'));

und dann die andere Variable im statistic()-Befehl verwenden.

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

...