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

Sehr geehrte Damen und Herren,

in Zusammenarbeit mit einem Panel-Anbieter liegen mir redirect-Links für Screen-Outs, Quotafull und complete vor. Die Einbindung dieser Links hat funktioniert. Mein Quotenende bedeutet N=500, der vorher selektierten Personen.
Diesbezüglich finde ich den Hinweis auf der SoSci-Seite "Quotierung" nicht unbedeutsam:
"Hinweis: Vorsicht beim Zusammenspiel von statistic() und redirect(). Der Befehl redirect() markiert die Fragebögen von Abbrechern und aufgrund der Quote abgewiesenen Teilnehmern als „abgeschlossen“, sodass sie von statistic() gezählt werden. Um hier falsche Zählungen zu vermeiden, ist es sinnvoll, die zu zählende Variable gegen Ende des Fragebogens mittels put() in eine Interne Variablen zu kopieren und mittels statistic() dann die interne Variable abzuzählen."

--> Allerdings weiß ich gerade nicht, wo und welche interner Variable ich am Ende einbinden kann/sollte und wo ich diese interne Variable am Anfang für das Quotenende einfügen sollte? Also kann ich am Ende (irgend-)eine Variable definieren (damit ich auf 500 Personen komme) und diese vorn am Anfang in den PHP-Code als Kriterium für die Quote einfügen?

Ich bin etwas ratlos.

Vielen Dank im Voraus für Ihre Hilfe.

ago in SoSci Survey (dt.) by s098619 (170 points)

1 Answer

0 votes

Allerdings weiß ich gerade nicht, wo und welche interner Variable ich am Ende einbinden kann/sollte und wo ich diese interne Variable am Anfang für das Quotenende einfügen sollte?

Nehmen wir als Beispiel einmal das Alter. Ich nehme (exemplarisch) an, dass Sie es mit einer offenen Eingabe abfragen (Variable SD02) und dann Sie 4 Alterskategorien für die Quotierung verwenden. Dann haben Sie auf der ersten Seite folgende Inhalte:

  • Abfrage des Alters mit value('SD02')
  • Umkodierung in eine PHP-Variable (z.B. $altersgruppe) mit 4 Ausprägungen mittels IF
  • Zählung, wie viele Personen für die Altersgruppe bereits in der internen Variable (z.B. "QC01_01") vorliegen
  • Vergleich der Zählung mit Ihrer Quote

Auf der vorletzten Seite (wo auch der Complete-Redirect erfolgt) haben Sie hingegen folgende Inhalte. Die ersten beiden sind identisch (auch vom PHP-Code her) mit dem was auf der Quotencheck-Seite passiert:

  • Abfrage des Alters mit value('SD02')
  • Umkodierung in eine PHP-Variable (z.B. $altersgruppe) mit 4 Ausprägungen mittels IF
  • Speicherung des Codes in der internen Variable ("QC01_01")

Das heißt: Wer nicht bis zum Complete kommt, bei dem bleibt die Variable QC01_01 leer, sie ist mithin nicht quotenrelevant.

Update

Nachdem diese Frage schon kürzlich einmal aufkam, wurde die Anleitung zum Quoten-Check nun vollständig überarbeitet: Quotierung

ago by SoSci Survey (91.9k points)
edited ago by SoSci Survey
Vielen Dank für die schnelle Antwort und auch die Änderungen auf der Website "Quotierung".

Zur Absicherung hier einmal der PHP-Code auf Seite 3, da auf Seite zwei die beiden Quotierungsmerkmale (Alter und Berufstätigkeit) abgefragt werden. So musste es stimmen, oder? Ich benötige insgesamt 500 Personen.

Auf der vorletzten Seite habe ich die Merkmale erneut ausgelesen und dann die put()-Funktion für die beiden Internen Variablen (IV01) direkt vor dem Complete-Rediret-Link eingefügt.  

// Quoten festlegen
$quotaAge = [
  2 => 500,  // 500 Personen in Altersgruppe 2 (18-65 Jahre)
];

$quotaBeruf = [
  1 => 500,  // 500 Berufstätige
];

//Variablen auslesen - berufstätig geht direkt
$beruf = value('SD17');
 
// Das Alter wird umkodiert
$age = value('SD16');
if ($age < 18) {
  $ageGroup = 1;
} elseif ($age <= 65) {
  $ageGroup = 2;
} elseif ($age > 65) {
  $ageGroup = 3;
}

// Abruf der vorliegenden Fälle für diese Merkmalsausprägung
// Internen Variablen IV01_01 bzw. _02 in Fragenkatalog integriert
$casesAge    = statistic('count', 'IV01_01', $ageGroup);
$casesBeruf = statistic('count', 'IV01_02', $beruf);
 
// Screenout
if (!array_key_exists($ageGroup, $quotaAge) || !array_key_exists($beruf, $quotaBeruf)) {
  redirect('https://mingle.respondi.com/s/1213131/ospe.php3?c_0002=0&return_tic=%reference%');
}
 
// Auslesen der Quoten für die angegebenen Merkmale
$maxPerAge    = $quotaAge[$ageGroup];
$maxPerBeruf = $quotaBeruf[$beruf];
 
// Quotenstopp
if (($casesAge >= $maxPerAge) || ($casesBeruf >= $maxPerBeruf)) {
  redirect('https://mingle.respondi.com/s/1213131/ospe.php3?c_0002=2&return_tic=%reference%');
}
Also eigentlich ist das keine Quotierung - eigentlich werfen Sie nur Personen <18 Jahre, >65 Jahre und nicht Berufstätige mittels Screenout hinaus. Das ginge auch einfacher :)

Zum Testen lassen Sie sich z.B. mittels debug() die aktuellen Zahlen anzeigen und setzen Sie die Quoten auf kleine Werte (z.B. 5). Dann könnten Sie testen, ob der Quotenstopp funktioniert. Den Redirect muss Respondi testen.

// Unter dem Screenout
debug($casesAge);
debug($casesBeruf);
...