0 votes
ago in SoSci Survey (dt.) by s104128 (305 points)
edited ago by SoSci Survey

Hallo liebes Sosci-Survey Team,

ich habe eine Frage zum Quotenstopp. Ich habe eine Quote für Alter und Geschlecht. Nach Abfrage des Alters und des Geschlechts habe ich folgenden PHP auf die nächste Seite gesetzt:

// insgesamt sind es 1200 Probanden für die Quote Alter
$quotaAlter = [
    1 => 444, // 444 aus Altersgruppe 1 (1980-1989)
    2 => 456, // 456 aus Altersgruppe 2 (1990-1999)
    3 => 300, // 300 aus Altersgruppe 3 (2000-2007)
];    
// bei der Quote Geschlecht ist eine Abweichung von 2,5% möglich
//z.B. 615 (52,5%) weibliche und 585 (47,5%) männliche Probanden sein.

$quotaGeschlecht = [ 
    1 => 615, // weiblich --> Puffer von 15 Probanden eingebaut um Abweichung von 50% um 2,5% zu ermöglichen 
    2 => 615, // männlich --> selber Puffer wie bei weiblich
];

// Das Alter wird umkodiert
$Alter = value('SD04_01');
if ($Alter < 1990) {
  $Altersgruppe = 1;
} elseif ($Alter < 2000) {
  $Altersgruppe = 2;
} elseif ($Alter < 2008) {
  $Altersgruppe = 3;
}

// Geschlecht wird direkt ausgelesen
$Geschlecht = value('SD01');

// Abruf der vorliegenden Fälle für diese Merkmalsausprägung
$casesAlter = statistic('count', 'Q001_01', $Altersgruppe);
$casesGeschlecht = statistic('count', 'Q002_01', $Geschlecht);


// Auslesen der Quoten für die angegebenen Merkmale
$maxPerAlter = $quotaAlter[$Altersgruppe];
$maxPerGeschlecht = $quotaGeschlecht[$Geschlecht];

// Quotenstopp
if (($casesAlter >= $maxPerAlter) || ($casesGeschlecht >= $maxPerGeschlecht)) {
redirect('https://XXXXXquotafull&i_survey=%reference%');
}


Am Ende des Fragebogens habe ich folgenden Code:

// Das Alter wird umkodiert
$Alter = value('SD04_01');
if ($Alter < 1990) {
  $Altersgruppe = 1;
} elseif ($Alter < 2000) {
  $Altersgruppe = 2;
} elseif ($Alter < 2008) {
  $Altersgruppe = 3;
}

// Geschlecht wird direkt ausgelesen
$Geschlecht = value('SD01');

put('Q001_01', $Altersgruppe);
put('Q002_01', $Geschlecht);
 redirect ('abcde...complete')

Leider werden die internen Variablen für die Quoten auch befüllt, wenn die Proband*innen zwischenzeitlich aus Qualitätsgründen rausgeworfen werden.
Wie stelle ich das ein, dass die Quote nur befüllt wird, wenn der Fragebogen vollständig abgeschlossen wurde?

1 Answer

0 votes
ago by SoSci Survey (360k points)

Leider werden die internen Variablen für die Quoten auch befüllt, wenn die Proband*innen zwischenzeitlich aus Qualitätsgründen rausgeworfen werden.

Entfernen Sie am besten die redirect()-Aufrufe und verwenden Sie stattdessen einen Baustein "Panel-Redirects" in Verbindung mit dem setStatus() Befehl, vgl. Anleitung zur Quotierung.

Alternativ sollte es auch funktionieren, direkt vor den redirect()-Befehl noch ein setStatus('quality fail'); zu setzen.

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

...