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

Liebes Socisurvey-Supportteam,

bei der Rekruitierung von Probanden meiner Umfrage unterstützt ein externen Anbieter (Respondi). Ich habe mir Ihre Anleitung zum Arbeiten mit externen Anbietern mehrmals durchgelesen, aber ich bin mir nicht sicher, ob meine Programierungen zu Screenout, Quotenstop und Exit-Link so stimmen. Beim Test des Fragebogens erscheint direkt nach der ersten Seite eine Respondi-Fehlermeldung ("Der Befragungslink ist leider fehlerhaft"):

Screenout:
An meiner Umfrage sollen Personen unter 18 und über 60 Jahren ausgschlossen werden und Personen, die kein Fleisch essen.

Zunächst zum Fleischkonsum:
Hier habe ich folgenden PHP Code vor die Variable (MT02_n), die den Fleischkonsum codiert (8= kein Fleischkonsum), gesetzt:

$eat = value('MT02_n');
// Screenout
if ($eat == 8) {
  redirect('https://mingle.respondi.com/s/1183166/ospe.php3?c_0002=0&return_tic=%reference%');
}

Stimmt das "%reference%" an der Stelle? Respondi übermittelte mir folgenden Link: 'https://mingle.respondi.com/s/1183166/ospe.php3?c_0002=0&return_tic=[UnserTicket]
Fällt sonst ein Fehler auf?

Das Screenout für das Alter (SD03_01) habe ich mit den Quotenstops in PHP-Codes zusammengefasst. Zu erst wurde das Alter in eine ordinale Variable umkodiert und in $agegrp gespeichert. Dann erfolgt der Screenout bei Probanden, die zu den age-Gruppen < 2 und > 5:gehören.

Anschließend erfolgt die Programmierung des Quotenstops mit verbundenen Quoten für die Merkmale Alter (4 Gruppen) und Geschlecht (3 Gruppen):

$age = (int)value('SD03_01');
 
// Umkodieren
if ($age < 18) {
  $ageGrp = 1;
} elseif ($age <= 29) {
  $ageGrp = 2;
} elseif ($age <= 39) {
  $ageGrp = 3;
} elseif ($age <= 49) {
  $ageGrp = 4;
} elseif ($age <= 60) {
  $ageGrp = 5;
} else {
  $ageGrp = 6;
}
 
// Im Datensatz speichern
put('SD20_01', $ageGrp);

// Merkmale auslesen
$ageGrp = value('SD20_01');
$gender = value('SD01');
 
// Evtl. Screenout
if (($ageGrp < 2) or ($ageGrp > 5) or ($gender < 1)) {
  redirect('https://mingle.respondi.com/s/1183166/ospe.php3?c_0002=0&return_tic=[UnserTicket]');
}

// Kennung für die demografische Zelle erstellen
$demID = $ageGrp.'-'.$gender;
 
// Obergrenzen definieren
$limits = array(
  '2-1' => 90,
  '2-2' => 83,
  '2-3' => 100,
  '3-1' => 78,
  '3-2' => 75,
 '3-3' => 100,
  '4-1' => 83,
  '4-2' => 81,
 '4-3' => 100,
  '5-1' => 106,
  '5-2' => 106,
 '5-3' => 100
);
 
// Abgeschlossene Fragebögen zählen
$n = statistic('crosscount', array('SD20_01', 'SD01'), array($ageGrp, $gender));
 
// Quoten prüfen
if ($n > $limits[$demID]) {
  redirect('https://mingle.respondi.com/s/1183166/ospe.php3?c_0002=2&return_tic=[UnserTicket]');
}

Den Complete-Link habe ich auf die vorletzte Seite gelegt:

redirect('https://mingle.respondi.com/s/1183166/ospe.php3?c_0002=1&return_tic=%reference%');

Ich wäre Ihnen sehr, sehr dankbar, wenn Sie die PHP-Codes mal prüfen könnten. Ich rätsele schon eine ganze Weile und komme nicht weiter.

Gibt es eine andere Möglichkeit die Erfüllung der Quoten der vollständig abgeschlossenen Befragungen während der Befragung zu prüfen (außer über Export des vollständigen Datensatzes)?

Herzlichen Dank für Ihre Unterstützung im Voraus & viele Grüße

in SoSci Survey (dt.) by s110805 (110 points)
edited by SoSci Survey

1 Answer

0 votes

Beim Test des Fragebogens erscheint direkt nach der ersten Seite eine Respondi-Fehlermeldung ("Der Befragungslink ist leider fehlerhaft"):

Das spricht dafür, dass Sie in den Screenout gerutscht sind. Dass Respondi dann eine fehlermeldung bringt ist normal, weil Sie ja keine gültige Teilnehmer-ID im Link übergeben haben.

Zum Testen des Screenout kommentieren Sie den redirect()-Befehl einfach aus und kontrollieren die Debug-Information. Sie können das redirect() auch einfach durch ein html() ersetzen, dann wird der Link angezeigt.

Stimmt das "%reference%" an der Stelle?

Ja.

Das Screenout für das Alter (SD03_01) habe ich mit den Quotenstops in PHP-Codes zusammengefasst.

Es sieht auf den ersten Blick korrekt aus. Ob es tatsächlich funktioniert empfehle ich zu testen: Setzen Sie für eine bestimmte Gruppe ein niedriges Limit (z.B. 3) und füllen Sie dann drei Fragebögen aus.

Im redirect() vom Screenout/Quotenstopp steht jeweils noch [UnserTicket] statt %reference%. Das wäre noch zu ändern.

Gibt es eine andere Möglichkeit die Erfüllung der Quoten der vollständig abgeschlossenen Befragungen während der Befragung zu prüfen

Sie können sich einfach einen zusätzlichen Fragebogen anlegen und dort mittels statistic() die Quotenerfüllung für alle Gruppen (via FOR-Schleife) ermitteln und mittels html() ausgeben. Also: Ja, aber nicht besonders bequem. Auf der Wunschliste steht langfristig u.a. eine einfachere Umseztung der Quotierung...

by SoSci Survey (85.6k points)
Vielen Dank für die schnelle Antwort!
Ich habe die Fehler bei den Screenouts gefunden. Es lag an einer falsch benannten Variable und daran, dass der PHP-Code mit dem redirect-Link auf der folgenden Seite liegen muss.Die Screenouts funktionieren nun.

Bei den Quotenstopps gibt es noch Probleme:

Beim Testen ist aufgefallen, dass Teilnehmer, die vorher durch andere redirects  ausgescreent werden, in der Funktion statistic mitgezählt werden, da sie von "FINISHED" erfasst werden.

Wie sorge ich dafür, dass nur Probanden von statistic gezählt werden, die zur Stichprobe gehören und den Fragebogen bis zum Schluss ausgefüllt haben?
> Beim Testen ist aufgefallen, dass Teilnehmer, die vorher durch andere redirects  ausgescreent werden, in der Funktion statistic mitgezählt werden, da sie von "FINISHED" erfasst werden.

Ja, wir arbeiten noch einer Unterschreidung zwischen FINISHED und COMPLETE, aber derweilen müssten Sie um das zu umgehen, die Variable bitte auf der vorletzten Seite des Fragebogen in eine interne Variable umkopieren, und in der statistic()-Funktion die interne Variable zählen.

Im Prinzip kopieren Sie Ihren Code also nochmal ans Ende - und lassen das put() vorne weg.
Vielen Dank für die Antwort.

Reicht es nicht, wenn ich in die Redirect-Befehle den Parameter "true" eintrage?

Bzgl. Ihrer Antwort bin ich mir nicht sicher, ob ich diese richtig verstehe. Sorry, dazu muss ich nochmal nachfragen:

>Ja, wir arbeiten noch einer Unterschreidung zwischen FINISHED und COMPLETE, aber derweilen müssten Sie um das zu umgehen, die Variable bitte auf der vorletzten Seite des Fragebogen in eine interne Variable umkopieren, und in der statistic()-Funktion die interne Variable zählen<

Nachdem ich eine interne Variable (SDxy_01) erstellt habe trage ich nun folgenden PHP-Code auf die letzte Seite zur Übergabe:

put('SDxy_01;$n) ???

In den PHP-Code der Quotierung zu Beginn des Fragebogens trage ich welchen Code mit statistic ein??
> Reicht es nicht, wenn ich in die Redirect-Befehle den Parameter "true" eintrage?

Jein. Das hat zu Folge, dass Teilnehmer/innen im Browser auf "zurück" klicken und dann den Fragebogen fortsetzen können. Die Lösung mit internen Variablen wäre stabiler.

Was die internen Variablen angeht: Ihr Code beinhaltet drei Teile. (1) das Umkodieren der Eingabe in einer Gruppe ($ageGrp), (2) das Speichern dieser Gruppe als interne Variable mittels put() und (3) den Quotencheck mittels statistic().

Kopieren Sie den kompletten Code nochmal auf die vorlsetzte Seite des Fragebogen. Vorne im Fragebogen entfernen Sie das put(), also Teil (2). Dafür entfernen Sie am Ende Teil (3) den Quotenstopp. Das bedeutet: Am Ende wird umkodiert ein Eintrag in der internen Variable vorgenommen. Vorne wird umkodiert und der Quotenstopp gegen diese interne Variable geprüft. Aber diese wird eben vorne noch nicht geschrieben, sodass der Fall noch nicht in der Statistik auftaucht.
...