0 votes
in SoSci Survey (dt.) by s227165 (110 points)

Ich möchte eine mehrwellige Befragung durchführen (2 Fragebögen bzw. zwei unterschiedlich Sätze an Fragen), bei der Teilnehmende in der ersten Runde zufällig einen der beiden Fragebögen bzw. Fragensatz ausfüllen, in der zweiten Runde bekommen sie dann den anderen.
Vermutlich würde ich die Frage Opt-In für E-Mail-Verteiler nutzen, um die Antworten zwischen den Wellen den Teilnehmenden zuzuordnen. Wie kann ich das aber mit der Randomisierung der Fragebögen (oder auch der Fragensätze innerhalb eines Fragebogens) verbinden, so dass irgendwie getrackt wird, welchen Fragebogen Teilnehmende in der ersten Runde beantwortet haben, und dass sie dann automatisch in der zweiten Runde den anderen Fragebogen bekommen?

1 Answer

0 votes
by SoSci Survey (339k points)

Ganz trivial ist es nicht, aber lösbar :)

Zunächst einmal sollten Sie sich mit dem Opt-In bei Selbstrekrutierung vertraut machen.

Wenn das mit der E-Mail funktioniert, sehen Sie sich den Zufallsgenerator an (welcher dann über die Reihenfolge entscheiden wird) und die Datenbank für Inhalte, mithilfe welcher Sie die Ziehung zwischen der ersten und zweiten Befragungswelle übertragen - damit der Fragebogen in Welle 2 weiß, was in Welle 1 gezogen wurde.

Das wäre soweit die Technik, damit Sie eine Randomisierung über zwei Wellen durchführen können. Im letztenm Schritt brauchen Sie dann noch multiLevelDown(), damit Sie im ersten Fragebogen zu dem passenden eigentlichen Fragebogen weiterführen können. Sie hätten also 2 technische Fragebögen, die sich um die Randomisierung in Welle 1 und 2 kümmern, und 2 inhaltliche Fragebögen, welche dann mittels multiLevelDown() angesteuert werden.

Wenn das jetzt ein wenig komplex klingt: Ganz trivial ist es in der Tat nicht. Aber lösbar. Und wenn Sie festhängen, gibt es im Online-Support ja Unterstützung :)

by s227165 (110 points)
Vielen Dank schonmal für die Antwort!

Bisher habe ich folgende Schritte umgesetzt: ein technischer Fragebogen für die erste Welle, welcher die allg. Infos und Abfragen, Email-Adresse für Selbstrekrutierung sowie die Randomisierung für die beiden Fragebögen enthält (die beiden inhaltlichen Fragebögen sind natürlich auch schon angelegt). Das scheint schon mal zu klappen, d.h. einer der Fragebögen wird angezeigt (für Abfrage der Email-Adresse brauch ich noch einen AVV, das muss ich noch
mit meiner Uni klären).

Bei den weiteren Schritten bin ich nun doch überfordert. Was muss ich für die zweite Welle anlegen, und wie genau nutze ich die Datenbank für Inhalte in meinem Fall? An welcher Stelle nutze ich multiLevelDown() ?
Vielen Dank!
by SoSci Survey (339k points)
>  Was muss ich für die zweite Welle anlegen

Falls Sie die Einladungen zu Teil 2 automatisch verschicken wollen: Einen zusätzlichen Fragebogen lt. der Anleitung zur Selbstrekrutierung, welcher sich mittels mailSchedule() um den Versand der Einladungsmails kümmert - dieser muss automatisch nach dem Opt-In aufgerufen werden (das stellen sie in der Frage ein). Dazu verweise ich nochmal auf die erste oben verlinkte Anleitung.

Dann brauchen Sie einen weiteren technischen Fragebogen.

Und dann müssten Sie in Welle 1 nach Abfrage der Mailadresse via Opt-In-Frage mittels dbSet() einen Eintrag erstellen, welcher unter der Personenkennung (die Sie von der Opt-In-Frage bekommen) die Zufallsziehung speichert. Das wird in der zweiten oben verlinkten Anleitung beschrieben. Nur dass Sie für den Schlüssel value() und die ID der Opt-In-Frage verwenden.
by s227165 (110 points)
Vielen Dank für die weiteren Tipps!

Ich hab versucht, das Ganze nachzuvollziehen und umzusetzen, aber mittlerweile hab ich das Gefühl, dass ich zwei Schritte vorwärts und vier zurück mache. Die php Codes und ganzen Anleitungen kann ich teilweise auch nur ansatzweise nachvollziehen  bzw. verlier ich schlicht und einfach den Überblick über die ganzen notwendigen Schritte (es ist nicht so, dass ich noch nie mit Programmiercode u.ä. gearbeitet hab, also ich glaub nicht dass ich dafür generell zu doof bin). Selbstwirksamkeit ist was anderes.

Gibt es die Möglichkeit, mein Projekt zu teilen, denn das Ganze lässt sich nur schwer hier alles nachvollziehbar darstellen?
by SoSci Survey (339k points)
Ja, gibt es - aber leider ist auch meine Zeit begrenzt, sodass ich nach Möglichkeit vermeide, Menschen Ihren Fragebogen zu implementieren.

So viele Schritte sind es eigentlich auch gar nicht. Fangen wir mal mit Schritt 1 an. Klappt das mit dem Opt-In denn schon? Haben sie einen zusätzlichen Fragebogen, in welchem dann der Zufallsgenerator einen von zwei Zetteln zieht? Und wird dieser Fragebogen direkt nach der Opt-In-Bestätigung automatisch aufgerufen?
by s227165 (110 points)
Ok, ich seh heut scheinbar etwas klarer! Folgendes ist momentan implementiert und scheint auch zu klappen:
- erster Fragebogen (Standard-Zugriff per Link), enhält Opt-In Email-Frage.
- zweiter Fragebogen (erste eigentliche Welle; Zugriff per Bestätigungslink in Opt-In-Email): Zufallsgenerator zieht einen von zwei Fragebögen F-X oder F-Y. Anschließend habe ich folgenden php-Code im Fragebogen:
$sender = getItems('R101', 'is', 4);
$key = 'ID-'.value('D104');
dbSet($key, $sender);
$qnr = value('R101', 'label');
goToQuestionnaire($qnr);

-> stimmt der php-Code bzw. macht der Sinn? Jedenfalls wird einer der Fragebögen F-X oder F-Y (bzw. R101-1 oder R101-2) umgesetzt. Aber ich weiß nicht, ob der dbSet-Code hier richtig platzier ist und tut was er soll. (im Datensatz wird für die Variable R101 jedenfalls korrekt der gezogene Fragebogen für den Teilnehmer gespeichert)

- dritter Fragebogen (zweite Welle, Zugriff per Serienmailversand manuell):
hier soll dann der jeweils andere der Fragebögen F-X oder F-Y aufgerufen werden, der in der ersten Welle noch nicht beantwortet wurde. Hier hab ich bisher aber lediglich den Zufallsgenerator wieder implementiert, was ja sicher nicht stimmt, weil dem egal ist, was in der ersten Welle passiert ist. (obwohl bisher in den Tests noch nie die Fragebögen F-X und F-Y in den zwei Wellen doppelt gezogen wurden, was aber womöglich nicht mehr der Fall ist, wenn es viele Teilnehmer auf einmal gibt)
-> Was muss ich also im dritten Fragebogen bzw. der zweiten Welle noch einfügen, so dass jeweils der andere Fragebogen F-X oder F-Y implementiert wird?
by SoSci Survey (339k points)
> stimmt der php-Code bzw. macht der Sinn?

Was sind denn R101 und S104 für Fragen?

> Aber ich weiß nicht, ob der dbSet-Code hier richtig platzier ist und tut was er soll.

dbSet() speichert einen Eintrag in der "Datenbank für Inhalte" (https://www.soscisurvey.de/help/doku.php/de:create:databank). Die Idee wäre, dass Sie dort abspeichern, in welche Gruppe die Person eingeteilt wurde - und zwar speichern Sie diese Information unter der Personenkennung (SERIAL) der Teilnehmer:in.

Diesen Eintrag brauchen Sie, damit Sie in der zweiten Welle die Gruppenzuordnung wieder abrufen können. Falls R101 der Zufallsgenerator ist, würde ich eher folgenden PHP-Code erwarten.

$group = value('R101');
$key = 'ID-'.caseSerial();
dbSet($key, $group);

Bevor wir uns um den dritten Fragebogen kümmern, lassen Sie uns den Code erstmal soweit bauen, dass in der Datenbank für Inhalte die Gruppenzuordnung gespeichert wird.
by s227165 (110 points)
R101 ist in der Tat der Zufallsgenerator.
D104 ist die Opt-In-Email-Frage bzw. die erzeugte Personenkennung.

Ich habe den php-Code im Fragebogen der ersten Welle also folgendermaßen angepasst:
$group = value('R101');
$key = 'ID-'.value('D104');
dbSet($key, $group);
$qnr = value('R101', 'label');
goToQuestionnaire($qnr);
by SoSci Survey (339k points)
Sie haben der Code ja erst in dem zweiten Fragebogen platziert, wenn also das Opt-In schon erledigt ist, und die Person von einem personalisierten Link auf den Fragebogen umgeleitet wurden.

(a) value('D104') ist hier nicht möglich, weil die Opt-In-Frage ja in Fragebogen eins steht, Sie aber nun in Fragebogen zwei sind und

(b) caserSerial() ist möglich, weil der zweite Fragebogen ja über den personalisierten Link in der Opt-In-Mail aufgerufen wurde.
by s227165 (110 points)
ah, stimmt, also muss der Code so heißen:
$group = value('R101');
$key = 'ID-'.caseSerial();
dbSet($key, $group);
$qnr = value('R101', 'label');
goToQuestionnaire($qnr);
ago by s227165 (110 points)
Was muss ich nun also für den dritten Fragebogen (zweite Welle) als php Code noch einfügen?
ago by SoSci Survey (339k points)
In der zweiten Welle ist caseSerial() und damit der Datenbankeintrag verfügbar.

$key = 'ID-'.caseSerial();
$info = dbGet($key);
if (!$info) {
  // TODO: Fehlermeldung anzeigen und pageStop()
}
$group = $info[0];
...
ago by s227165 (110 points)
ok, vielen Dank! Und wie genau steuer ich dann den zweiten eigentlichen Fragebogen an?  Was muss ich da genau im Fragebogen hinzufügen? Ich nehme an, der Zufallsgenerator kann es ja nicht sein...
ago by SoSci Survey (339k points)
Sie Leute klicken auf den personalisierten Link in der Serienmail, dadurch weiß SoSci Survey, wer teinimmt - und das liefert Ihnen wiederum die caseSerial(). Mit dem Code, den ich oben gepostet habe, rufen Sie dann die Daten aus der Datenbank für Inhalte = Ihre Zufallsziehung.

Diese liefert der obigen Code in $group, aber Sie können das natürlich auch noch in eine interne Variable schreiben.

put('IV01_01', $group);
ago by s227165 (110 points)
Wenn ich nur diesen php-Code in den Fragebogen der zweiten Welle hinzufüge, wird kein Fragebogen aufgerufen (es erscheint nur die letzte Seite). Was fehlt da noch?
ago by SoSci Survey (339k points)
Der obige Code ruft lediglich die Ziehung aus der Datenbank ab, und der Code mit put() speichert das nur in einer Variable. Was Sie dann mit dem Wert machen, können Sie entscheiden.

Sie könnten zum Beispiel nachsehen, welche Kennung für den numerischen Code in R101 gespeicher ist:

$qnr = getItemtext('R101', $group);

Und dann zu diesem Fragebogen springen

goToQuestionnaire($qnr);
ago by s227165 (110 points)
bei diesem Code wird der gleiche Fragebogen wie in der ersten Welle noch einmal aufgerufen, anstatt zu dem anderen, noch nicht ausgefüllten, zu springen
ago by SoSci Survey (339k points)
Dann sollten Sie wohl besser einen anderen Code verwenden. Wie wäre es damit:

if ($group == 1) {
  goToQuestionnaire('wave2-1');
} else {
  goToQuestionnaire('wave2-2');
}

Natürlich können Sie mit einem derartigen Filter auch Inhalte direkt innerhalb des Fragebogens variieren - unterschiedliche Fragebögen zu verwenden ist meist unnötig kompliziert.

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

...