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,

ich möchte für meine Umfrage eine Quotierung nutzen und habe sie mit kleinen Zahlen getestet. Allerdings greift der Quotenstopp nie bei der Anzahl der Fälle, die ich angegeben habe, sondern erst bei ca. doppelt so vielen. Wissen Sie, woran das liegen könnte? Kann es etwas damit zu tun haben, dass die Seite "end" des Fragebogens nicht erreicht werden kann, da ich vor der letzten Seite die Teilnehmer zu dem Panelanbieter zurückleite, mit dem ich zusammenarbeite?

Das ist der php-Code für meine Quotierung (mit kleinen Zahlen zu Testzwecken)

$age = (int)value('SD04_01');
$gender = value('SD03');

if ($age < 19) {
  $ageGrp = 1;
} elseif ($age <= 29) {
  $ageGrp = 2;
} elseif ($age <= 39) {
  $ageGrp = 3;
} elseif ($age <= 49) {
  $ageGrp = 4;
} elseif ($age <= 59) {
  $ageGrp = 5;
} elseif ($age <= 69) {
  $ageGrp = 6;
} else {
  $ageGrp = 7;
}

put('SD05_01', $ageGrp);
if (($ageGrp > 6)) {
  redirect('http://www.anbieter.com/p1234567/screenout.php?id=%panelID%');
}

$demID = $ageGrp.'-'.$gender;

$limits = array(
  '1-1' => 1,
  '1-2' => 1,
  '2-1' => 1,
  '2-2' => 1,
  '3-1' => 2,
  '3-2' => 2,
  '4-1' => 2,
  '4-2' => 2,
  '5-1' => 2,
  '5-2' => 2,
  '6-1' => 2,
  '6-2' => 2
);

$n = statistic('crosscount', array('SD05_01', 'SD03'), array($ageGrp, $gender));

if ($n > $limits[$demID]) {
  redirect('http://www.anbieter.com/p1234567/quotafull.php?id=%panelID%');
}

Außerdem ist mir im Fragebogen noch aufgefallen, dass die Variable "time_Sum" nicht mit der tatsächlichen Bearbeitungszeit des Fragebogens übereinstimmt, sie ist nur etwa halb so lang. Könnte das vielleicht dieselbe Ursache haben wie das Quotierungs-Problem?

Ich hoffe, Sie können mir helfen. Vielen Dank im Voraus!

in SoSci Survey (dt.) by s049708 (130 points)
edited by SoSci Survey

1 Answer

0 votes

Sie haben im Moment die Grenze bei n=1 bzw. n=2. Dazu haben Sie dann folgende Prüfung:

if ($n > $limits[$demID]) {

Sie müssen also mehr (vollständig ausgefüllte) Fälle vorliegen haben, damit der Filter überhaupt greift. In Ihrem Fall spricht der Filter bei eiem Limit von 1 erst dann an, wenn 2 vollständig ausgefüllte Datensätze mit der Kombination vorliegen: 2 > 1

Kommt das ungefähr hin? Ansonsten ergänzen Sie bitte unter dem statistic()noch folgende Zeile:

debug($n);

... und Testen Sie im Debug-Modus.

by SoSci Survey (238k points)
Vielen Dank für die schnelle Antwort! Mir war nicht klar, dass die Zählung bei 0 beginnt. Ich habe es noch 2x mit n=5 getestet und der Stopp kam erst, nachdem 7 vollständige Fälle vorlagen, das wäre ja dann trotzdem einer zu viel.

Aber ich habe jetzt die Prüfung im php-Code auf
if ($n >= $limits[$demID]) {
geändert. Jetzt scheint es zu funktionieren.
Lassen Sie sich zum Testen ausgeben, was die Funktion `statistic()` denn überhaupt ermittelt:

$n = statistic('crosscount', array('SD05_01', 'SD03'), array($ageGrp, $gender));
debug($n);

Oder alternativ auch:

html('<p>Vorhandene Fälle: '.$n.'</p>');

Dann können Sie genau sehen, ob beim 7ten mal eine 5 oder eine 6 ermittelt wird. Vielleicht wird einer der Fälle einfach nicht gezählt, z.B. weil er nicht abgeschlossen wurde.

Die Funktion statistic() zählt, wie viele Datensätze mit einer bestimmten Eigenschaft schon vorliegen. Wenn Sie nichts anderes angeben, dann vollständige Datensätze - deshalb der Beginn der Zählung bei 0.
...