0 votes
in SoSci Survey (dt.) by s222544 (640 points)
edited by SoSci Survey

Hallo SoSci Survey Online Support,

vielen Dank für Ihre Hilfe in meinem Projekt.

Derzeit befinde ich mich bei der Kodierung der ersten Studie bei Sosci. Ziel ist es die gegebenen Antworten aus der ersten Studie in der zweiten Studie zu präsentieren und dabei zu messen, wie die Probanden auf die Antworten der ersten Studie reagieren.

Dazu möchte ich eine Datenbank für Inhalte verwenden - siehe https://www.soscisurvey.de/help/doku.php/de:create:databank?s[]=*dbget*

Laut https://www.soscisurvey.de/help/doku.php/de:create:functions:dbset ist der erste Schritt im ersten Projekt dbSet() zu verwenden:

Ich würde also mittels

 $data = array(
  value('SD04_01'),
  value('SD02')
  value ('XX')
  ... 
);
dbSet(caseSerial(), $data);

alle notwendigen Antworten der Probanden aus der ersten Studie in der Datenbank speichern.

Hier meine erste Frage: dbSet() muss ich auf der vorletzten Seite des Fragebogens erheben, sodass alle Antworten im Interview abgefragt wurden. Ist dies richtig? Ich möchte pro Interview 12 zufällig gezogene Aktienpreise speichern, 12 Antworten zur Qualität der Aktie, 12 Antworten zur Qualität II speichern. In der ersten Studie werde ich 300 Probanden haben. Kann die Datenbank diese Menge an Daten in einer Bank speichern? Gibt es Speicherplatz Beschränkungen?

Im zweiten Projekt würde ich zuerst die Datenbank aus Projekt 1 in Projekt 2 hochladen? Mittels "Die Tabelle wird als CSV-Datei gespeichert. Die erste Zeile dient hier nur der Beschriftung – der der CSV-Datei sollte sie nicht enthalten sein. Unter Spezialfunktionen → Datenbank für Inhalte wird die CSV-Datei in das Projekt importiert."

Meine zweite Frage hierzu: Was hat es mit dem Schlüssel in der Tabelle auf sich und wo erscheint der Schlüssel in der Datenbank aus Studie 1? Müsste Schlüssel die Case Number sein?

Dann brauche ich einen Zufallsgenerator, der mir aus 300 Probanden (aus Projekt 1) eine Datenbankzeile (?) zieht und im Interview anzeigt?

Könnten Sie mir den weiteren Vorgang erklären?

Den unten stehenden Code müsste ich jetzt jeweils für die 12 Aktienpreise, 12 Antworten für Qualität 1, 12 Antworten für Qualität 2 anpassen - jeweils auf die passende/ zutreffende Seite des Fragebogens in Studie 2?

urnDraw('artikel', 'IV01');
$key = 'a'.value('IV01_01');  // Ein "a" vor die Zahl schreiben
$inhalt = dbGet($key);
 
html('
  <h2>'.$inhalt[0].'</h2>
  <div>'.$inhalt[1].'</div>
');

Meine dritte Frage: Es scheint, so als würde $inhalt = dbGet($key) die gesamte Zeile der Datenbank anzeigen; ich bräuchte Fragmente; also auf der ersten Seite nur die Aktienpreise, ein Preis pro Interviewseite, auf der nächsten Seite zeige ich Qualität 1 an, auf der nächsten Qualität 2. Dann den nächsten Aktienpreis, gefolgt von Qualität 1 und Qualität 2 usw. für alle der 12 Aktienpreise und Qualitäten. Ich möchte nicht, dass die gesamte Zeile aus der Datenbank am Stück angezeigt wird.

Meine vierte Frage: In der ersten Studie erhebe ich mittels Schieberegler das Vertrauen in die gezeigte Aktie. Im zweiten Projekt möchte ich die Antwort nur als ja/nein Antwort darstellen. Als Erläuterung sobald im ersten Projekt mittels Schieberegler eine Zahl größer 0 ausgewählt wird, so soll im zweiten Projekt nur ja angezeigt werden. Nur wenn 0 ausgewählt wurde, soll nein angezeigt werden.
Gibt es einen Weg dies bereits in der Datenbank zu hinterlegen?

P.S. Gibt es Hilfe Seiten zu dbStore und dbRetrieve?

Vielen Dank im Voraus!

1 Answer

0 votes
by SoSci Survey (328k points)

dbSet() muss ich auf der vorletzten Seite des Fragebogens erheben, sodass alle Antworten im Interview abgefragt wurden. Ist dies richtig?

Sie können die Daten erst dann mit value() abrufen, wenn die (letzte) Frage beantwortet und mit "Weiter" abgeschickt wurde. Davon ist die korrekte Platzierung Ihres Codes abhängig.

Statt vieler einzelner value()-Aufrufe möchten sie sich vielleicht lieber caseData() ansehen.

Kann die Datenbank diese Menge an Daten in einer Bank speichern?

Ja.

Gibt es Speicherplatz Beschränkungen?

Pro Datenbankeintrag sind maximal 64 kByte möglich.

Im zweiten Projekt würde ich zuerst die Datenbank aus Projekt 1 in Projekt 2 hochladen?

Also, wenn Sie ohnehin nicht im selben Projekt arbeiten, könnten Sie die Daten auch einfach post hoc nach der ersten Erhebung direkt (z.B. als Excel-Datei) ins zweite Projekt hochladen. Dann brauchen Sie im ersten Projekt nichts zu machen.

Allerdings müssen Sie in beiden Fällen dafür sorgen, dass SoSci Survey weiß, welche Person es vor sich hat, und unter welchem Datenbankschlüssel die richtigen Daten liegen. Wie möchten Sie das denn zuordnen?

Müsste Schlüssel die Case Number sein?

Okay, es scheint so, dass Sie das noch nicht geklärt hätten ;)

Also: Der zweite Fragebogen muss wissen, unter welchem Schlüssel (quasi die Nummer des Datenbankeintrags) er die passenden Daten findet. Bei mehrwelligen Erhebungen ist die Personen-Kennung (SERIAL) aus dem Serienmail-Adresseintrag da ganz nützlich. Ansonsten könnten Sie über einen persönlichen Code nachdenken.

ich bräuchte Fragmente

Aus dem Array, das Ihnen dbGet() liefert, können Sie beliebige Elemente herausgreifen. Mehr dazu s. Einführung in Arrays.

Als Erläuterung sobald im ersten Projekt mittels Schieberegler eine Zahl größer 0 ausgewählt wird, so soll im zweiten Projekt nur ja angezeigt werden.

Ich persönlich würde die "Umkodierung" direkt im zweiten Fragebogen vornehmen.

Gibt es Hilfe Seiten zu dbStore und dbRetrieve?

Noch nicht ... aber der einzige Unterschied ist, dass Sie als zweiten Parameter ein assoziatives Array (s. Anleitung zu Arrays, oben) übergeben können, und dieses durch dbRetrieve() auch wieder zurückbekommen. Allerdings ist hier bislang kein (!) Import via CSV-Datei möglich. Dafür müssten Sie die Daten also im ersten Interview mittels dbStore(..., caseData()) abspeichern.

by s222544 (640 points)
Vielen Dank für Ihre ausführliche Nachricht.

Zu "Also, wenn Sie ohnehin nicht im selben Projekt arbeiten, könnten Sie die Daten auch einfach post hoc nach der ersten Erhebung direkt (z.B. als Excel-Datei) ins zweite Projekt hochladen. Dann brauchen Sie im ersten Projekt nichts zu machen.":

Verstehe ich Sie richtig, dass ich die erhobenen Daten aus Projekt 1 in Projekt 2 importiere via erhobene Daten - Daten importieren - obwohl ich eigentlich neue Daten erheben möchte?
Ich wäre für Ihre Erklärung des korrekten Imports sehr dankbar!
Sollte ich vielleicht nicht doch lieber mit einer Datenbank arbeiten? Oder meinen, wenn ich die erhobenen Daten importiert habe, kann ich mittels caseData() und arrays (in der jeweiligen Datenzeile) die notwendigen Informationen im Fragebogen des zweiten Projektes anzeigen? Funktionieren arrays auch ohne Datenbank?

Aus Projekt 1 möchte ich nicht alle erhobenen Daten in Projekt 2 anzeigen; nur ausgewählte (wie oben in der Fragestellung beschrieben).

Zu "Okay, es scheint so, dass Sie das noch nicht geklärt hätten ;)

Also: Der zweite Fragebogen muss wissen, unter welchem Schlüssel (quasi die Nummer des Datenbankeintrags) er die passenden Daten findet. Bei mehrwelligen Erhebungen ist die Personen-Kennung (SERIAL) aus dem Serienmail-Adresseintrag da ganz nützlich. Ansonsten könnten Sie über einen persönlichen Code nachdenken":

In Experiment entscheidet ein Zufallsgenerator über die EG Einteilung, deshalb ist es egal, welcher Proband in Projekt 2 welche Datenreihe aus Projekt 1 bekommt - die Aufgaben in Projekt 2 sind für alle Probanden gleich. 300 Personen in Projekt 1, eingeteilt in drei experimentelle Gruppen, bedeutet 300 Personen in Projekt 2.

Bezüglich des persönlichen Codes - brauche ich den, da es sich um 600 verschiedene (nicht überlappende) Teilnehmer handelt? Der Code scheint für mehrwellige Befragungen derselben Probanden gedacht zu sein.

Zu "Dafür müssten Sie die Daten also im ersten Interview mittels dbStore(..., caseData()) abspeichern.":

Brauche ich denn dbStore und dbRetrieve für meine Zwecke?

Vielen Dank im Voraus! :)
by SoSci Survey (328k points)
> Verstehe ich Sie richtig, dass ich die erhobenen Daten aus Projekt 1 in Projekt 2 importiere via erhobene Daten - Daten importieren

Nein. Sie würden die Daten aus Welle 1 erst einmal in Excel soweit reduzieren, wie Sie sie in Projekt 2 benötigen, und dann unter "Datenbank für Inhalte" importieren.

> Oder meinen, wenn ich die erhobenen Daten importiert habe, kann ich mittels caseData() und arrays (in der jeweiligen Datenzeile) die notwendigen Informationen im Fragebogen des zweiten Projektes anzeigen?

caseData() wäre eine Möglichkeit, alle value() auf einmal zu erledigen. Es geht hierbei um den Abruf der Daten in Welle 1 - falls Sie die Daten dort direkt in die Datenbank für Inhalte speichern wollten. Das macht allerdings nur dann richtig Sinn, wenn Sie den zweiten Fragebogen im selben Befragungsprojekt anlegen.

> In Experiment entscheidet ein Zufallsgenerator über die EG Einteilung, deshalb ist es egal, welcher Proband in Projekt 2 welche Datenreihe aus Projekt 1 bekommt

Warum zeigen Sie in Projekt 2 dann nicht einfach zufällige Werte an?

> Brauche ich denn dbStore und dbRetrieve für meine Zwecke?

Nein, nicht zwangsläufig.

> Bezüglich des persönlichen Codes - brauche ich den, da es sich um 600 verschiedene (nicht überlappende) Teilnehmer handelt?

Wenn es unterschiedliche Teilnehmer:innen sind, erleichtert das einiges, ja. Aber dann brauchen Sie immer noch (z.B.) einen Zufallsgenerator in Welle 2, der entscheidet, welche Datenzeile aus Welle 1 verwendet werden soll.

Auf die Fallnummer würde ich mich hier nicht verlassen, weil diese aufgrund von Abbrechern ganz unterschiedlich sein kann.
by s222544 (640 points)
Vielen Dank für Ihre Unterstützung!

Bezüglich "Warum zeigen Sie in Projekt 2 dann nicht einfach zufällige Werte an?"

Weil die Werte (also Aktienpreise, Meinung zu Qualität 1 und 2) zwischen den Probanden identisch sein müssen.
Die Probanden aus beiden Wellen müssen dieselben Daten in der derselben Reihenfolge sehen, aber welcher Proband aus der zweiten Welle welchen Probanden aus Welle 1 sieht, ist egal. Ich führe sozusagen ein 1:1 matching durch.
Aber ich glaube nicht, dass Sie das fragen. Dürfte ich um Ihre Verdeutlichung Ihrer Frage bitten?

Zu "Wenn es unterschiedliche Teilnehmer:innen sind, erleichtert das einiges, ja. Aber dann brauchen Sie immer noch (z.B.) einen Zufallsgenerator in Welle 2, der entscheidet, welche Datenzeile aus Welle 1 verwendet werden soll."

Ja, klar, verstehe ich. Deshalb auch der Zufallsgenerator in Welle 2, der aus 300 einen Zettel zieht.

Zu "Auf die Fallnummer würde ich mich hier nicht verlassen, weil diese aufgrund von Abbrechern ganz unterschiedlich sein kann."

Dann kann ich nach Erhebung aller gültigen Fälle (finished = 1, etc.) eine Nummerierung in der Excel Datei vornehmen und dies als Schlüssel für die Datenbank für Welle 2 nehmen?


Vielen Dank für Ihre Antworten!
by SoSci Survey (328k points)
> Aber ich glaube nicht, dass Sie das fragen

Doch tue ich :) Weil es dann vielleicht eine viel einfachere Lösung gibt.

Und zwar würde ich darüber nachdenken, die 300 Sets vorab zu erstellen und dann entweder direkt im Zufallsgenerator oder in der Datenbank für Inhalte abzulegen - für beide Projekte.

Ein Zufallsgenerator würde also dafür sorgen, dass jede Teilnehmer:in zufällig eine des 300 Sets zieht. Und in Projekt 2 passiert einfach dasselbe nochmal.

Aber ja, Sie können die Daten auch in Welle erst würfeln, und diese Daten dann in der Datenbank für Inhalte in Welle 2 hinterlegen. Da wäre es dann tatsächlich sinnvoll, dass Sie die Fallnummer aus Welle 1 (evtl. mit einem vorangestellten Buchstaben) als Schlüssel verwenden. Und die Liste der Schlüssel legen Sie dann in den Zufallsgenerator von Welle 2.

Schreiben Sie den Schlüssel dann in Welle 2 noch in eine interne Variable. Das erleichtert Ihnen das Matching ganz ungemein :)

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

...