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

0 votes

Hallo und schon mal vielen Dank für die Hilfe!!!

Wir schlagen uns jetzt seit mehreren Wochen mit der Problematik rum, dass Testprobanden bei den Demografischen Daten durch den Quotenstop ausgescreent werden und dass, obwohl bisher keines der Limits erreicht wurde.

Anbei unser php-Code - wir sind alles Laien auf dem Gebiet und würden uns wahnsinnig über eine Rückmeldung freuen.

Außerdem sind wir uns unsicher, ob die Screenout-Links auf eine seperate Fragebogenseite müssen, oder ob der ganze php-Code auf einer Seite stehen kann.

//Altersgruppe des aktuellen Teilnehmers auslesen
$ageGrp = value('DD01');

//Screenout
if (($ageGrp < 18) or ($ageGrp > 69)) { 
    redirect ('https://mingle.respondi.com/s/ospe.php3?c_0002=0&return_tic=%reference%');
}

//Zuordnung zu Altersgruppen und Quotenstop
$limits = array(38, 413, 482, 167);
$redirect = FALSE;

if($ageGrp >= 18 and $ageGrp <= 20){ 
    if($limits[0] <= 0) { 
    $redirect = TRUE;
    }
    $limits[0] -= 1;
} 
else if ($ageGrp >= 21 and $ageGrp <= 40){ 
    if($limits[1] <= 0) { 
    $redirect = TRUE;
    }
    $limits[1] -= 1;
} 
else if ($ageGrp >= 41 and $ageGrp <= 60){
if($limits[2] <= 0) { 
    $redirect = TRUE;
}
    $limits[2] -= 1;
}
else if ($ageGrp >= 61 and $ageGrp <= 69){
if($limits[3] <= 0) { 
    $redirect = TRUE;
}
    $limits[3] -= 1;
}

// Abgeschlossenen Fragebögen zählen
$n = statistic ('count', array('DD01'), array($ageGrp));

//Quotenstop
if ($redirect){
    redirect ('https://mingle.respondi.com/s/ospe.php3?c_0002=2&return_tic=%reference%');
}


//Bildungs-Merkmal auslesen
$education = value('DD06');

//Obergrenzen definieren
$limits = array(
'1' => 336,
'2' => 328,
'3' => 351,
'4' => 85
);

// Abgeschlossene Fragebögen zählen
$n = statistic ('count', array('DD06'), array($education));

//Quotenstop
if ($n > $limits[$education]) 
    { redirect ('https://mingle.respondi.com/s/ospe.php3?c_0002=2&return_tic=%reference%');
}


//Geschlechts-Merkmal auslesen
$gender = value('DD02');

//Obergrenze definieren
$limits=array(
'1'=> 550,
'2'=> 550,
'3'=> 550
);

// Abgeschlossene Fragebögen zählen
$n = statistic ('count', array('DD02'), array($gender));

//Quotafull
if ($n > $limits[$gender]) {
    redirect ('https://mingle.respondi.com/s/ospe.php3?c_0002=2&return_tic=%reference%');
}
in SoSci Survey (dt.) by s120218 (120 points)
edited by SoSci Survey

1 Answer

0 votes

Ihr PHP-Code ist m.E. an mehreren Stellen fehlerhaft - meine erste Frage daher: Weshalb orientieren Sie sich nicht an einfach an dem schönen Muster, das wir vor einer Weile in der Anleitung ergänzt haben: Quotierung -> Technische Umsetzung (unverbundene Quoten)

Die meisten Fehler meine ich bei den Altersgruppen zu erkennen. Da speichern Sie das Alter (nicht die Altersgruppe) in $ageGrp. Dann kommen einige Filter, die inhaltlich keinen Sinn machen, weil sie konstante Werte gegeneinander prüfen. Und dann zählen Sie ab, wie viele Personen mit den dem Alter SIe schon in der Stichprobe haben:

$n = statistic ('count', array('DD01'), array($ageGrp));

Diese Zahl prüfen Sie aber nicht weiter, sondern verweisen auf eine Variable $redirect, die weiter oben nicht TRUE werden kann. Daher kommt also zumindest nicht die fehlerhafte Weiterleitung.

Wir schlagen uns jetzt seit mehreren Wochen mit der Problematik rum, dass Testprobanden bei den Demografischen Daten durch den Quotenstop ausgescreent werden

Bitte prüfen Sie doch unbedingt (anhand des Datensatzes, wo der Screenout gut sichtbar sein sollte), welche demografischen Merkmale diese Teilnehmer/innen gemein haben.

Wenn das nicht weiterhilft, dann erstellen Sie eine interne Variable und speichern Sie mit put() den Grund für das Screenout hinein, also vor jedem redirect() noch ein put():

if ($n > $limits[$gender]) {
    put('IV01_01', 'gender');
    redirect ('https://mingle.respondi.com/s/ospe.php3?c_0002=2&return_tic=%reference%');
}

Außerdem sind wir uns unsicher, ob die Screenout-Links auf eine seperate Fragebogenseite müssen

Alles gut, das darf alles auf eine Seite - abe natürlich frühestens auf der Seite nach der Abfrage der entsprechenden demografischen Daten.

by SoSci Survey (130k points)
...