0 votes
in SoSci Survey (dt.) by s053303 (170 points)
closed by SoSci Survey

Liebes Support Forum,

in einem meiner Fragebögen funktioniert das Quotafull nicht mehr-> Habe mir gerade die Zahlen ausgeben lassen und die Quoten sind übererfüllt. Problem scheint bisher nur bei einerm der fünf aktiven Fragebögen aufzutreten. Ich habe nichts am Code verändert, nur die Zahlen für die Quoten.

Vielleicht noch wichtig: ich habe in einer laufenden Untersuchung, die Quoten angepasst. Hat das zum Fehler geführt?

Vielen Dank für Ihre Hilfe!

closed with the note: Keine neuen informationen - vermutlich handelte es sich um eine Abweichung, welche durch zu viele gleichzeitige Teilnehmer entstanden war.
by SoSci Survey (306k points)
Ohne Ihren Code schwer zu sagen. Zu Kontrolle können Sie aber das Ergebnis von `statistic()` einmal per `debug()`in der Debug-Information ausgeben lassen. Womöglich klappt es nur deshalb nicht, weil Sie im Fragebogen nur ausgefüllte Fragebögen zählen (FINISHED), in der Kontroll-Auswertung aber alle Fragebögen?
by s053303 (170 points)
Ich dachte zumindest, dass ich die richtigen Fragbögen zähle. Ja, es sollen natürlich nur die gezählt werden, die den Fragebogen beendet haben, so soll die Quote garantiert werden. Bei der Auswertung habe ich auch nur die Fragebögen ausgewertet, die bis zur letzten Seite gekommen sind und daher an den Panelbetreiber zurück geschickt werden. Bisher hat alles auch reibungslos funktioniert.

Erst als ich die Quoten im laufenden Fragebogen verändert habe, gibt es keine "Stopp"-Funktion mehr.

Der Code lautet:

$Sex = value('PQ01');   
if (($Sex < 1) or ($Sex > 2)) {   
setNextPage('repeat');
redirect('[link]=%reference%', true); }   

$limitsSex = array(   
1 => 74,   
2 => 69   
);   

$nQnrSex = statistic('count', 'PQ01', $Sex);

$nMaxSex = $limitsSex[$Sex];   

if ($nQnrSex >= $nMaxSex) {   
setNextPage('repeat');
redirect('[link]tic=%reference%', true);
}

$age = (int)value('PQ02_01');
if ($age < 1947) {
$ageGrp = 1;
} elseif ($age <= 1957) {
$ageGrp = 2;
} elseif ($age <= 1967) {
$ageGrp = 3;
} elseif ($age <= 1977) {
$ageGrp = 4;
} elseif ($age <= 1987) {
$ageGrp = 5;
} elseif ($age <= 1999) {
$ageGrp = 6;
} else {
$ageGrp = 7;
}
put('ID01_01', $ageGrp);
$ageGrp = (int)value('ID01_01');
if (($ageGrp < 2) or ($ageGrp > 6)) {
setNextPage('repeat');
redirect('[link]%reference%', true);
}

$limitsAge = array(   
2 => 26,   
3 => 32,   
4 => 33,
5 => 26,
6 => 26);   

$nQnrAge = statistic('count', 'ID01_01', $ageGrp);

$nMaxAge = $limitsAge[$ageGrp];   

if ($nQnrAge >= $nMaxAge) {   
setNextPage('repeat');
redirect('[link]%reference%', true);
}

$edu = (int)value('PQ03');
if ($edu < 1) {
$eduGrp = 0;
} elseif ($edu <= 6) {
$eduGrp = 1;
} elseif ($edu <= 11) {
$eduGrp = 2;
} elseif ($edu <= 18) {
$eduGrp = 3;
} else {
$eduGrp = 4;
}
put('ID01_02', $eduGrp);
$eduGrp = (int)value('ID01_02');
if (($eduGrp < 1) or ($eduGrp > 3)) {
setNextPage('repeat');
redirect('[link]%reference%', true);
}

$limitsEdu = array(   
1 => 58,   
2 => 61,   
3 => 24);   

$nQnrEdu = statistic('count', 'ID01_02', $eduGrp);

$nMaxEdu = $limitsEdu[$eduGrp];   

if ($nQnrEdu >= $nMaxEdu) {   
setNextPage('repeat');
redirect('[link]%reference%', true);
}
by SoSci Survey (306k points)
Das sieht auf den ersten Blick alles korrekt aus. Welche Quote läuft denn über? Was wird angezeigt, wenn Sie unter dem $nMaxSex = .... (bzw, beim entsprechenden Maß, wo die Quote nicht greift) die folgenden Zeilen ergänzen, den Fragebogen im Debug-Modus starten und dann angeben, Mitglied der überfüllten Grupe zu sein:

debug($nQnrSex);
debug($nMaxSex);
by s053303 (170 points)
edited by s053303
So wie es aussieht, funktioniert sie bei keiner Quote - mit ist es aber bisher nur bei Alter und Bildung aufgefallen, aber Geschlecht würde ich auch erst sehen, wenn es an einem kritischen Punkt wäre...

Das Problem ist, ich kann mir die debug information gar nicht ansehen, weill ich direkt weggeleitet werde. Im debug modus scheint das Wegleiten also zu funktionieren. Es wurden allerdings schon bei der laufenden Untersuchung zu viele Teilnehmer in einige der Gruppen gelassen.

Kann es sein, dass sie den FB alle gleichzeitig ausgefüllt haben?

Viele Grüsse
by SoSci Survey (306k points)
Vorsicht: Im Debug-Modus werden die Daten aus der Fragebogen-Entwicklung auch mitgezählt - im "normalen" Modus nur die echten Interviews (MODE=interview).

Wenn die Quote nur leicht überschritten wurde, ist es denkbar, dass einfach viele Teilnehmer den Fragebogen gleichzeitig aufgerufen haben. Aber dann dürfte nichts mehr hinzukommen, nachdem ausreichend Fragebögen mit FINISHED=1 vorlagen.

Sie können zum Testen/zur Fehlersuche innerhalb des Fragebogens unter "Fragebogen zusammenstellen" auch einen zweiten Fragebogen hinzufügen, der nur via statistic() die Werte abruft und anzeigt, aber nicht weiterleitet.
by s053303 (170 points)
Ich bin Ihrem Ratschlag mit dem neuen Fragebogen gefolgt und habe folgende debug information erhalten:

Einmal für Alter:

[Information]    Interview number 677 is to be continued
[Information]    Questionnaire Test from project PTSEITA will be used
[Processing]    Reading answers from page 2
[Information]    Retention period on page 2 has been 10 seconds
[Information]    Answer to PQ13 = 2
[Information]    Answer to PQ01 = 1
[Information]    Answer to PQ02_01 = 1949
[Information]    Answer to PQ03 = 17
[Information]    100% of the questions have been answered so far
[Processing]    Create questionnaire page no. 3
[Information]    value("PQ13") = 2
[Information]    value("PQ01") = 1
[Information]    Statistics: Number of answers with a value of 1 on PQ01: 67
[Information]    value("PQ02_01") = 1949
[Information]    Answer to ID01_01 = 2
[Information]    The internal variable ID01_01 gets a value of 2.
[Information]    value("ID01_01") = 2
[Information]    Statistics: Number of answers with a value of 2 on ID01_01: 29
debug()    Content: $nQnrAge = 29 (integer)
debug()    Content: $nMaxAge = 26 (integer)
[Information]    According to a setNextPage() command, page START was selected
[Information]    value("PQ03") = 17
[Information]    Answer to ID01_02 = 3
[Information]    The internal variable ID01_02 gets a value of 3.
[Information]    value("ID01_02") = 3
[Information]    Statistics: Number of answers with a value of 3 on ID01_02: 31
[Information]    According to a setNextPage() command, page START was selected
[Information]    No visible content on this page, continue with page 1
[Processing]    Create questionnaire page no. 1
[Content]    Show text Welcome
[Content]    Create question ID02
[Information]    Answer missing for ID02_RV1
[Information]    Answer to ID01_03 =
[Information]    The internal variable ID01_03 gets a value of .
[Information]    The following placeholders have been prepared:
%reference% = (text) –

Einmal für Bildung:

[Information]    Interview number 679 is to be continued
[Information]    Questionnaire Test from project PTSEITA will be used
[Processing]    Reading answers from page 2
[Information]    Retention period on page 2 has been 23 seconds
[Information]    Answer to PQ13 = 2
[Information]    Answer to PQ01 = 1
[Information]    Answer to PQ02_01 = 1988
[Information]    Answer to PQ03 = 18
[Information]    100% of the questions have been answered so far
[Processing]    Create questionnaire page no. 3
[Information]    value("PQ13") = 2
[Information]    value("PQ01") = 1
[Information]    Statistics: Number of answers with a value of 1 on PQ01: 67
[Information]    value("PQ02_01") = 1988
[Information]    Answer to ID01_01 = 6
[Information]    The internal variable ID01_01 gets a value of 6.
[Information]    value("ID01_01") = 6
[Information]    Statistics: Number of answers with a value of 6 on ID01_01: 10
debug()    Content: $nQnrAge = 10 (integer)
debug()    Content: $nMaxAge = 26 (integer)
[Information]    value("PQ03") = 18
[Information]    Answer to ID01_02 = 3
[Information]    The internal variable ID01_02 gets a value of 3.
[Information]    value("ID01_02") = 3
[Information]    Statistics: Number of answers with a value of 3 on ID01_02: 31
[Information]    According to a setNextPage() command, page START was selected
[Information]    No visible content on this page, continue with page 1
[Processing]    Create questionnaire page no. 1
[Content]    Show text Welcome
[Content]    Create question ID02
[Information]    Answer missing for ID02_RV1
[Information]    Answer to ID01_03 =
[Information]    The internal variable ID01_03 gets a value of .
[Information]    The following placeholders have been prepared:
%reference% = (text) –

Es sieht also so aus, dass erkannt wird, dass die Quote voll ist und umgeleitet werden sollte. Ich habe ein bisschen Bedenken, den Fragebogen wieder aufzuschalten, da ich nicht abschliessend sagen kann, ob die Fehlerquelle in zu vielen gleichzetig ausgefüllten Fragebogen liegt. Die Höchstzahl liegt bei 7 Fällen über dem Quotafull bei einer Kategorie. Was meinen Sie dazu? Bzw. gibt es eine bessere Methode, Quoten zu setzen, damit so etwas nicht vorkommt?

Vielen Dank!
by SoSci Survey (306k points)
Beim Geschlecht ist die Quote nicht voll, oder? Der Wert ist ja (inklusive Testdaten) 67 und Ihr Limit liegt höher.

Anders bei der BIldung. Da müssten Sie bitte einmal im Datensatz mit einer Kreuztabelle aus MODE, FINISHED und ID01_02 nachzählen, ob die Quote auch für MODE=interview und FINISHED=1 schon erfüllt ist.

Wenn ja, dann können Sie ja bedenkenlos einen Testfragebogen (im normalen Modus) bis zum Quotencheck ausfüllen, um zu prüfen, ob die Weiterleitung in der Altersgruppe korrekt funktioniert.

Ein Punkt noch: Wenn Sie in redirect() keinen zweiten Parameter (true) angeben, wird das Interview als FINISHED=1 markiert. Bitte prüfen Sie, dass dies Ihren Quotencheck nicht verzerrt.
by s053303 (170 points)
Genau, die Quote für Geschlecht ist in beiden Gruppen noch nicht erreicht.

Ich habe mir die Kreuztabelle nun ausgeben lassen. Quoten für ID01_02 unter den Bedingungen MODE=interview und FINISHED=1 sind (über)erfüllt.
Also im nächsten Schritt noch einmal für Alter prüfen?

Im Code für die Weiterleitung ist ein TRUE enthalten, daran habe ich gedacht.
by SoSci Survey (306k points)
Der nächste Schritt wäre m.E., dass Sie das Quota-Out für die Bildung nochmal im Real-Test prüfen.
by s053303 (170 points)
Ich habe es gerade durch unseren Panelanbieter testen lassen. Die Weiterleitung funktioniert.

Ich frage mich aber, ob es nicht eine bessere Möglichkeit gibt, die Quotierung zu steuern - so wird es sicher häufig vorkommen, dass Quoten übererfüllt werden, v.a. bei längeren Fragebögen. Hätten Sie noch einen Trick?
by SoSci Survey (306k points)
Nun ... Sie können ein gewisses Risiko eingehen und auch unvollständige Fragebogen in der statistic()-Funktion zählen. Dafür würden Sie z.B. auf Seite 5 erst die interne Variable setzen, die gezählt wird - und hoffen, dass alle, die bis Seite 5 kommen und damit quotenrelevant werden, den Fragebogen auch abschließen.

Langfristig denke ich über eine spezielle Quotierungsfunktion nach, welche z.B. mit Sperrzeiten arbeitet und auch unvollständige Fragebögen zählen könnte, wenn diese in den letzten 10 Min. bearbeitet wurden. Aber diese Planung steckt noch in den Anfängen. Zumal damit eine Reihe weiterer Optimierungen z.B. in Kontext der Panel-Weiterleitung verbunden sein soll.

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

...