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

Hallo Sosci-Survey Team,

wir führen mit einem Marktforschungsinstitut eine zweiwellige Befragung durch. In der ersten Welle werden Teilnehmende entweder Kontrollgruppe oder Experimentalgruppe zugeordnet (randomisiert) und innerhalb der Experimentalgruppe wird ihnen 1 von 3 möglichen Texten gezeigt. Für die zweite Welle müssen wir nun wissen, in welcher Gruppe die Teilnehmenden zum ersten Zeitpunkt waren.
Zunächst wollte ich dies über einen Fragebogen mit Unterbrechung realisieren, aber das funktioniert nicht, weil wir vorab keine Seriennummer haben, sondern nur eine REF und psID vom Marktforschungsinstitut. Mit zwei Fragebögen ergeben sich jedoch andere Probleme.

Im Link den das Institut den Teilnehmenden zuschickt, werden REF und psID vom Institut übergeben, z.B.:
https://soscisurvey.de/ernaehrung20/?r=12341234123412341234123412341234&psID=00de9e2e97dde8400f2b24e9cdd8f0ba (fiktiver Link Befragung 1)

Die Idee war nun, diese zum Zeitpunkt 1 zu speichern und die psID zum Zeitpunkt 2 als Seriennummer zu verwenden, z.B.
https://soscisurvey.de/ernaehrung20/?r=12341234123412341234123412341234&psID=00de9e2e97dde8400f2b24e9cdd8f0ba&s=00de9e2e97dde8400f2b24e9cdd8f0ba (fiktiver Link Befragung 2)

Die psID würden wir dann vor Welle 2 bei Seriennummern hochladen und als Schlüssel in der Datenbank verwenden und dort die Daten vom Fragebogen zu Zeitpunkt 1 hochladen. Wir können die psID jedoch nicht bereits zum Zeitpunkt 1 als solche verwenden, da die Links vom Marktforschungsinstitut generiert werden.

Ich habe mittlerweile alle möglichen Einträge im Handbuch und im Forum dazu gelesen, aber ich verstehe noch nicht ganz, wie ich nun auf diese Daten zugreifen kann und in den Fragebogen einbinden (Personen aus Experimentalgruppe 1 sollen anderen Text/Fragen sehen als die aus den übrigen Gruppen und der Kontrollgruppe). Da es zum Zeitpunkt 1 noch keine Seriennummer gibt, kann ich da noch nicht in die Datenbank schreiben.

Ich bin Ihnen für jede Hilfe dankbar und gerne auch offen für Alternativvorschläge!

Freundliche Grüße

in SoSci Survey (dt.) by s153398 (155 points)

1 Answer

0 votes

Im Link den das Institut den Teilnehmenden zuschickt, werden REF und psID vom Institut übergeben

Die psID ist eine personenspezifische ID?

Gut, dann lösen Sie das am einfachsten über die Datenbank für Inhalte.

Tauschen Sie im PHP-Beispiel das caseSerial() einfach gegen value('XY01_01') aus, wobei XY01_01 die Variable ist, in welcher Sie die Personen-ID mittelts "Gerät und übermittelte Variablen" gespeichert haben.

by SoSci Survey (193k points)
Zunächst einmal Danke für die Antwort und ja, die psID ist eine personenspezifische ID.

"Datenbank für Inhalte" habe ich mehrfach gelesen, aber ich verstehe nach wie vor nicht, wie der Zugriff funktioniert, ohne dass zunächst etwas in die Datenbank reingeschrieben wird - ich möchte nur auf die hochgeladenen Werte aus Welle 1 zugreifen. Die Beispiele passen nicht genau auf unsere Situation und sind - für uns - leider auch nicht übertragbar.
Wir haben bereits alles mögliche versucht und schaffen es nicht, die Experimentalbedingungen in Welle 2 zu übergeben (die übergebene Variable existiert offenbar nicht zu W2) und es hoffen deshalb, auf weitere Hilfe!
> aber ich verstehe nach wie vor nicht, wie der Zugriff funktioniert, ohne dass zunächst etwas in die Datenbank reingeschrieben wird

Hineinschreiben müssen Sie etwas ... das passiert bei Ihnen in der ersten Erhebung. Dort wird unter der Personen-ID (die dort ja schon verfügbar ist) z.B. das Ergebnis der Zufallsziehung in die Datenbank geschrieben.

Falls Sie die erste Welle bereits erhoben haben sollten, können Sie die Liste mit Zufalls-Zuordnungen natürlich auch als Tabelle in die Datenbank für Inhalte hochladen.
Hm dann schicke ich einfach mal den aktuellen Versuch mit:
Bei der ersten Erhebung steht:

// Zuordnung Experimentalgruppe vs. Kontrollgruppe
$zahl = value('ZU02');
if ($zahl == 1) {
goToPage('KGW1S1');
} else {
goToPage('Ex1');
}
// Bedingung fuer Welle 2 speichern
$key = 'ZU-'.'IV17_01';
$data = array(
  value('ZU02')
);
dbSet($key, $data);

sowie:
// Auslesen der numerischen Codes (1 bis 3)
$code = value('RF_01');
// Textbaustein variieren
if ($code == 1) {
  text('stimulus1');
} elseif ($code == 2) {
  text('stimulus2');
} elseif ($code == 3) {
  text('stimulus3');
}// Bedingung fuer Welle 2 speichern
$key = 'ST-'.'IV17_01';
$ST = array(
  value('ST05')
);
dbSet($key, $ST);

Zur zweiten Erhebung (Welle 2):
$key = 'ZU-'.'IV17_01';
$ZU = dbGet($key);
if ((value('ZU') > 1)) {
goToPage('Ex1');
} else {
goToPage('KGW2S1');
}
// Aufruf Zuordnung Experimentalgruppe vs. Kontrollgruppe

$data = dbGet(caseSerial());
if ($data) {
  $stimu = $data[0];
} else {
  // Keine Teilnahme in Welle 1 gefunden. Screenout
  buttonHide();
  pageStop();
}
$key = 'ST-'.'IV17_01';
$ST = dbGet($key);
if ((value('ZU') > 1)) {
goToPage('Ex1');
} else {
goToPage('KGW2S1');
}

Die Daten sind nicht erhoben, aber ich habe exemplarisch Pretestdaten hochgeladen und deren Seriennummern/IDs verwendet, aber es kommt immer die Meldung, dass die Variablen nicht existieren...
Den Code zum Speichern in der ersten Welle sollten Sie nach oben stellen - das goToPage() verlässt die Seite und dann wird der Code unten nicht mehr ausgeführt.
Und der korrekte Schlüssel müsste lauten:

$key = 'ZU-'.value('IV17_01');
Ich habe die Änderungen übernommen, aber es funktioniert immer noch nicht und es kommt stets die Fehlermeldung, dass keine Daten vorliegen.
Nachdem Sie den ersten Fragebogen aufgerufen haben (wo Sie den Schlüssel auch entsprechend geändert haben)?

Prüfen Sie doch bitte unter Spezialfunktionen -> "Datenbank für Inhalte" einmal, welche Einträge dort vorliegen.
Die Schlüssel und Bedingungen werden in der Datenbank gespeichert. Der Zugriff klappt allerdings immer noch nicht und mit

$key = 'ZU-'.value('IV17_01');
$ZU = dbGet($key);
if ('ZU-'.value('IV17_01') == 2) {
goToPage('Ex1');
} else {
goToPage('KGW2S1');
}

Landen alle auf Seite KGW2S1...  (obwohl sie in der Datenbank auch sehr wohl den Wert 2 haben)
> Der Zugriff klappt allerdings immer noch nicht und mit

Ich denke, es liegt an Ihrem Filter:

if ('ZU-'.value('IV17_01') == 2)

Hier prüfen Sie ob der Zugangsschlüssel (!) den Wert 2 hat. Da er immer mit "ZU" beginnt, dürfte das nie zutreffen. Ich denke, Sie meinen das hier:

if ($ZU[0] == 2)

Die [0] benötigen Sie, weil die Datenbank für Inhalte immer ein Array liefert. Auch dann, wenn nur ein Wert im Datensatz gespeichert ist.
1000 Dank - es funktioniert endlich alles wie geplant! Falls noch jemand anderes ein ähnliches Problem hat, fasse ich den funktionierenden Befehl nun noch einmal zusammen:

Erst habe ich eine Variable für Gerät und übermittelte Daten angelegt (IV17_RV1), welche die psID (ID der Teilnehmenden für Welle 1 und 2) als Seriennummer abgespeichert.
Dann wird die Zuordnung von Kontrollgruppe vs. Experimentalgruppen gespeichert:

// Bedingung fuer Welle 2 speichern
$key = 'ZU-'.value('IV17_RV1');
$data = array(
  value('ZU02') // ZU02 ist ein Zufallsgenerator
);
dbSet($key, $data);

Für die Experimentalbedingung gibt es drei verschiedene Stimuli, von denen jeder teilnehmenden Person einer gezeigt wird:

// Auslesen der numerischen Codes (1 bis 3)
$code = value('RF_01');  // RF_01 ist ein Zufallsgenerator
// Textbaustein variieren
if ($code == 1) {
  text('stimulus1');
} elseif ($code == 2) {
  text('stimulus2');
} elseif ($code == 3) {
  text('stimulus3');
}

// Bedingung fuer Welle 2 speichern
$key = 'ST-'.value('IV17_RV1');
$ST = array(
  value('ST05')
);
dbSet($key, $ST);

In Welle 2 wird aufgerufen ob eine Person in der Kontroll- oder den Experimentalbedingungen ist mit:

// Aufruf Zuordnung Experimentalgruppe vs. Kontrollgruppe
$key = 'ZU-'.value('IV17_RV1');
$ZU = dbGet($key);
if ($ZU[0] == 2){
goToPage('EX');
} else {
goToPage('KG);
}

// Abrufen welche Experimentalgruppe und auf entsprechende Seite weiterleiten
$key = 'ST-'.value('IV17_RV1');
$ST = dbGet($key);
if ($ST[0] == 1){
  goToPage('EX1');
} if ($ST[0] == 2){
  goToPage('EX2');
} if ($ST[0] == 2){
  goToPage('EX3');
} else {
goToPage('ende');
}
...