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

Ich möchte implementieren, dass Teilnehmer bei regelmäßiger Durchführung des Fragebogens vorausgefüllte Fragebögen erhalten, damit nur noch Anpassungen gemacht werden müssen, falls nötig.

Ich möchte den Teilnehmern dafür zu Beginn des Fragebogens in Zeitpunkt t die Frage stellen, ob ihre Angaben für die nächste Umfrage in t+1 gespeichert werden sollen (ja/nein). Ist es aber überhaupt möglich, in t+1 auf die Angabe dieser Frage aus t zurückzugreifen und nur dann den Fragebogen vorauszufüllen, wenn die Antwort in t "ja, bitte Angaben speichern" lautete?
Oder muss ich den "Umweg" gehen, dass ich nur die Daten derjenigen Teilnehmer in die Datenbank für das Vorausfüllen übernehme, die die obige Frage mit "ja" beantwortet haben?

Vielen Dank!

in SoSci Survey (dt.) by s155566 (170 points)
> Ich möchte implementieren, dass Teilnehmer bei regelmäßiger Durchführung des Fragebogens vorausgefüllte Fragebögen erhalten, damit nur noch Anpassungen gemacht werden müssen, falls nötig.

Möchten Sie auch die individuellen Daten aus jeder Runde behalten oder sollen diese einfach überschrieben werden?
Ich bin nicht ganz sicher, ob ich Sie richtig verstehe. Meinen Sie, dass ich nachverfolgen kann, welche Anpassung ggf. bei einer der Fragen vorgenommen wurde im Vergleich zum vorherigen Fragebogen?
Ja ... denn Sie können entweder einen neuen Fall im Datensatz anlegen oder den alten Fall einfach überschreiben. Bei zweiterem sehen Sie aber nur die jeweils zuletzt gegebene Antwort auf eine Frage im Datensatz.
Spontan würde ich präferieren, dass die Daten aus jeder Runde erhalten bleiben sollen. Wird die Umsetzbarkeit des Vorausfüllens dadurch erschwert im Vergleich zum Fall, dass die Antworten jeweils überschrieben werden? Bzw. ist damit eine Filterfrage, wie in meiner Ausgangsfrage geschildert, überhaupt möglich?
Wenn man die Original-Daten aus der vorigen Runde erhalten möchte, müsste man den Fall zunächst kopieren. Dafür sieht SoSci Survey bisher keine Funktion vor (wenn wir über mehr als eine Handvoll Variablen sprechen), aber ich werde mal über geeignete Lösungen nachdenken. Eine Herausforderung wäre in diesem Fall, den passenden Fall zu ermitteln, aus dem kopiert werden soll. Dies können ja ab Runde 3 mehrere sein.

> Bzw. ist damit eine Filterfrage, wie in meiner Ausgangsfrage geschildert, überhaupt möglich?

Das wäre über die Datenbank für Inhalte durchaus realisierbar ... aber ein wenig aufwändiger, denn Sie müssten eine Liste aller Variablen eintragen, die Sie übertragne möchten. Daher habe ich oben auch geschrieben, dass es bisher keine gute Lösung für mehr als eine Handvoll Variablen gibt.
> Wenn man die Original-Daten aus der vorigen Runde erhalten möchte, müsste man den Fall zunächst kopieren.

Wäre es denn nicht möglich, dass ich nach jeder Runde den aktuellen Datensatz in einer csv-Datei o.Ä. downloade? Dann hätte ich die Daten zu jeder Runde verfügbar und diese könnten in der folgenden Runde "ohne Verlust" überschrieben werden.

> Eine Herausforderung wäre in diesem Fall, den passenden Fall zu ermitteln, aus dem kopiert werden soll. Dies können ja ab Runde 3 mehrere sein.

In meinem Fall sollte immer nur aus der Vorrunde kopiert werden.
Falls jemand eine Runde aussetzt, könnte man dann auch die Daten aus der letzten Runde, an der teilgenommen wurde, benutzen? Also im preset-Befehl dann ein Befehl, dass immer die aktuellsten Daten, die vorliegen, genutzt werden sollen?

Wenn ich darauf verzichten würde, nachverfolgen zu können, welche Anpassungen gemacht wurden und die Daten einfach jedes Jahr überschreiben lasse, ist dann die Umsetzung der Filterfrage einfacher umsetzbar oder ist das unabhängig voneinander?
Ich hatte mir vorgestellt, dass vielleicht eine if-Bedingung vor den preset-Befehl zum Vorausfüllen gesetzt wird, damit nur bei Beantwortung der Filterfrage mit "ja" die Daten aus dem Vorjahr übernommen werden. Aber wenn ich Sie richtig verstehe, muss zunächst in der Datenbank eine Liste der Variablen erstellt werden. Wie sähe dann die weitere Umsetzung aus?

Bitte entschuldigen Sie meine Masse an Fragen! Vielen Dank schon einmal für die Hilfe bis jetzt.

2 Answers

0 votes
 
Best answer

Update

Die Funktion caseData() erlaubt es nun, die Daten eines Interviews (oder Teile davon) auszulesen. Diese können dann direkt in die Datenbank für Inhalte geschrieben werden.

In der Anleitung zur neuen Funktion finden Sie auch Code-Beispiele konkret für Ihren Anwendungsfall.

Der IF-Filter, der auf eine Personenkennung prüft, kann natürlich auch so erweitert werden, dass die Daten nur gespeichert werden, wenn die Befragte angibt, dass die Daten übernommen werden sollen.

by SoSci Survey (198k points)
selected by s155566
Ganz herzlichen Dank, Sie haben mir wirklich sehr weitergeholfen! :-)
0 votes

Wäre es denn nicht möglich, dass ich nach jeder Runde den aktuellen Datensatz in einer csv-Datei o.Ä. downloade?

Doch, aber das bedeutet, dass Sie sich um die Daten manuell kümmern müssen (fehleranfällig) und dass es nur funktioniert, wenn die Wellen für alle Befragten parallel laufen ... je nach Design ist das oftmals auch anders.

In meinem Fall sollte immer nur aus der Vorrunde kopiert werden.

Ich denke darüber nach, wie man das effizient kodieren kann. Also z.B. "letzter Datensatz der im selben Fragebogen beantwortet wurde". Aber das funktioniert z.B. nicht, wenn der Link doppelt aufgerufen wurde und so "zwischendurch" ein leerer Datensatz erstellt wurde.

Und was ist, wenn die Person in Welle 1 angibt, dass die Daten übernommen werden sollen und in Welle 2 dann sagst, dass nicht. Sollen dann in Welle 3 Daten aus Welle 1 angezeigt werden oder nicht? Sie sind sich da laut Ihrer Frage selbst noch nicht 100%ig sicher. Aber bevor ich was schickes implementiere, will ich solche Fragen natürlich gerne klären.

Im Moment schwebt mir eine Lösung vor, die mit einer PHP-Zeile alle (!) Antworten aus dem laufenden Interview in der "Datenbank für Inhalte" ablegt. Dann könnte man das im nächsten Interview bequem übernehmen - so wie sonst eine einzelne Antwort (s. Anleitung). Und durch das aktive Schreiben in die Datenbank könnte man auch Ambivalenzen (Übernehmen aus Welle 1 oder nicht ... das hieße dann löschen des Datenbankeintrags) behandeln.

Wenn ich darauf verzichten würde, nachverfolgen zu können, welche Anpassungen gemacht wurden und die Daten einfach jedes Jahr überschreiben lasse, ist dann die Umsetzung der Filterfrage einfacher umsetzbar oder ist das unabhängig voneinander?

Dann könnten Sie einfach dafür sorgen, dass das Interview nie beendet wird ... und dass das Ausfüllen beim Aufruf des Serienmail-Links jedesmal neu startet. Dann gäbe es aber auch keine "nein nicht übernehmen" Option.

Ich hatte mir vorgestellt, dass vielleicht eine if-Bedingung vor den preset-Befehl zum Vorausfüllen gesetzt wird, damit nur bei Beantwortung der Filterfrage mit "ja" die Daten aus dem Vorjahr übernommen werden.

Das IF müsste nach meiner obigen Idee eher im vorigen Fragebogen stehen. Dort würde dann entweder etwas in die Datenbank für Inhalte geschrieben, oder nicht, oder ein bestehender Eintrag würde sogar gelöscht. Und die neue Erhebungswelle würde einfach immer alles nehmen, was sie in der Datenbank für Inhalte findet.

by SoSci Survey (198k points)
> Ich denke darüber nach, wie man das effizient kodieren kann. Also z.B. "letzter Datensatz der im selben Fragebogen beantwortet wurde". Aber das funktioniert z.B. nicht, wenn der Link doppelt aufgerufen wurde und so "zwischendurch" ein leerer Datensatz erstellt wurde.

Das passiert bei mir leider recht häufig, dass der Link mehrfach aufgerufen wird, ohne dass (alle) Eintragungen vorgenommen wurden und dann erst beim letzten Aufruf der Fragebogen vollständig ausgefüllt wird. Wenn der Befehl lautet, es soll der aktuellste Versuch genutzt werden, um diesen in die Datenbank zu übertragen, funktioniert das dann auch für Personen, die mehrfach den Link aufgerufen haben oder ist das Ganze dann für diese Leute nicht möglich?

> Im Moment schwebt mir eine Lösung vor, die mit einer PHP-Zeile alle (!) Antworten aus dem laufenden Interview in der "Datenbank für Inhalte" ablegt.

Das heißt es würde dann nicht möglich sein, nur Daten aus bestimmten Fragen/Frageblöcken bzw. Seiten des Fragebogens vorauszufüllen, sondern entweder alles oder nichts?

> Und was ist, wenn die Person in Welle 1 angibt, dass die Daten übernommen werden sollen und in Welle 2 dann sagst, dass nicht. Sollen dann in Welle 3 Daten aus Welle 1 angezeigt werden oder nicht? Sie sind sich da laut Ihrer Frage selbst noch nicht 100%ig sicher. Aber bevor ich was schickes implementiere, will ich solche Fragen natürlich gerne klären.

Das kann ich natürlich nachvollziehen, dass Sie solche Dinge zunächst klären möchten. Ich muss mir dazu nochmal konkretere Gedanken machen und das abklären und würde mich dann nochmal melden diesbezüglich. Sie brauchen sich also noch nicht sofort die Mühe machen und etwas neues für mich implementieren. Ich versuche erst noch zu evaluieren, inwieweit das Ganze umsetzbar ist und welche Möglichkeiten/Einschränkungen es gibt.
> Das heißt es würde dann nicht möglich sein, nur Daten aus bestimmten Fragen/Frageblöcken bzw. Seiten des Fragebogens vorauszufüllen, sondern entweder alles oder nichts?

Doch, das kann ich gerne vorsehen, wenn ich es weiß. Man könnte z.B. eine Liste von Rubrik- oder Frage-IDs an die Funktion übergeben, sodass nur diese Daten verwendet werden.

Bei der Lösung über die Datenbank für Inhalte hätten wir auch kein Problem, wenn der Link mehrfach aufgerufen wird. Da ist es ja egal, ob es der letzte oder vorletzte Datensatz ist, aus welchem wir die Daten übernehmen.
Sie können schonmal ausprobieren, wie Sie mit der Datenbank für Inhalte eine einzelne Variable in einen neuen Fragebogen übernehmen können ... das brauchen Sie auf alle Fälle.

Ich würde dann die valueList()-Funktion so anpassen, dass man damit einfach alle Variablen oder die Variablen aus ausgewählten Rubriken oder Fragen auslesen kann. Mittels json_encode() können Sie diese dann mit Variablennamen in der Datenbank für Inhalte ablegen, aber das erkläre ich dann in der Anleitung noch.
Ich habe versucht, die Datenbank für Inhalte mit einer Variable zu testen. Innerhalb der Datenbank dient ja die erste Spalte zur Identifikation der Teilnehmer. Wird dafür die Seriennummer oder die Link-Basis genutzt, wenn diese unterschiedlich sein sollten?
Zum Testen sollten Sie bereits mit Teilnahme-URLs oder besser noch Serienmails arbeiten. So bekommt jede:r Befragte eine Personenkennung in den Datensatz (SERIAL), welche Sie mittels caseSerial() nutzen und als Schlüssel für die Datenbank verwenden können: https://www.soscisurvey.de/help/doku.php/de:create:databank#daten_zwischen_interviews_austauschen
Vielen Dank, ich werde das Ganze dann bald erneut testen. Noch eine zwei ganz andere Fragen:
Die Datenbank wird dann auch auf dem SoSci Survey-Server gespeichert, genauso wie die Daten zur Umfrage, oder?
Wie sieht die Datenbank aus, mit welchem "System"/Programm wird diese erstellt? Es wird ja vermutlich keine Excel-Datei sein.
Ja, die "Datenbank für Inhalte" wird auf dem Befragungsserver abgelegt.

> Wie sieht die Datenbank aus, mit welchem "System"/Programm wird diese erstellt? Es wird ja vermutlich keine Excel-Datei sein.

Es sieht aus wie eine Excel-Datei und man kann eine solche auch importieren. Im Wesentlichen braucht man sich aber keine Gedanken um das Erstellen machen, das passiert mit dbSet() ganz automatisch.
Für Ihren Anwendungsfall gibt es nun die Funktion caseData()
...