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, ich hatte diese Frage vor einiger Zeit gestellt und die Antwort hat mir sehr weiter geholfen. Allerdings ist nun doch ein Problem aufgetreten, welches mir leider erst bei der Datenanalyse aufgefallen ist. Es scheint nämlich, als hätten alle Probanden (bis auf einen, und zwar Proband Nummer 2) doch nur Liste 4 gesehen. Ich beschreibe erstmal was ich gemacht habe:
Ich habe $ Rubriken angelegt:
L1 Liste 1
L2 Liste 2
usw.

In jeder Rubrik befinden sich 48 Fragen (Liste 1: L101,.., L148; Liste 2: L201, ...L248; usw für Liste 3 und 4).

In einer weiteren Rubrik (ZG) liegt der Zufallsgenerator ZG01. Er enthält die Zettel (Inhalte):

1 = Liste 1
2 = Liste 2
3 = Liste 3
4 = Liste 4

Unter bisher gezogen wird angezeigt:

1: 96
2: 96
3: 96
4: 96

Evtl. liegt der Fehler bei der Ziehung: Unter Anzahl der Zettel pro Interview sind 4 Zettel angegeben, hier hätte ich wohl "1" eintragen müssen?

Art der Ziehung ist Gleichverteilte Ziehung (Ziehen ohne Zurücklegen).

In dem Fragebogen habe ich dann bevor die Fragen gezeigt werden eine Seite eingefügt, die die ZG, sowie folgenden php-code enthält:

question('ZG01');
$code = value('ZG01');
if ($code == 1) {
  $rubrik = 'L1';
} elseif ($code == 2) {
  $rubrik = 'L2';
} elseif ($code == 3) {
  $rubrik = 'L3';
} else {
  $rubrik = 'L4';
}
registerVariable($rubrik);

Anstelle der Frage habe ich auf die einzelnen Fragebogenseiten den php-code gestellt, wie oben beschrieben.

Seite 1: question($rubrik.'01');
Seite 2: question($rubrik.'02'); usw.
question($rubrik.'01');

Das Verrückte ist, dass ich mehrere Testläufe gemacht habe, und mir sicher war, dass alle Listen gezeigt werden! Ich habe öfters 4 Testläufe hintereinander gemacht (also als wären es 4 Probanden), und da war mir nur als merkwürdig aufgefallen, dass Liste 4 immer zuerst gezeigt wird. In meinen Testläufen sah ich also Liste 4, dann 1, dann 2, dann 3.

Ich bin natürlich ein wenig verzweifelt, weil die Datenerhebung schon gelaufen ist und möchte unbedingt aufklären, wie das passieren konnte.

Als zusätzlich Info: Ich habe die Reihenfolge der Fragen randomisiert, mit folgendem Code, der auf der Seite nach der ZG angezeigt wird:

$pages = array('S01', 'S02', 'S03', 'S04', 'S05' ,
 'S06', 'S07', 'S08', 'S09', 'S10',
 'S11', 'S12', 'S13', 'S14', 'S15',
 'S16', 'S17', 'S18', 'S19', 'S20',
 'S21', 'S22', 'S23', 'S24', 'S25',
 'S26', 'S27', 'S28', 'S29', 'S30',
 'S31', 'S32', 'S33', 'S34', 'S35',
 'S36', 'S37', 'S38', 'S39', 'S40',
 'S41', 'S42', 'S43', 'S44', 'S45',
 'S46', 'S47', 'S48');

// Die Seiten nicht direkt mischen, sondern deren Positionen
$indices = array_keys($pages);
shuffle($indices);

// Nun die Ränge speichern - und die neue Abfolge der Seiten in $random speichern
$random = array();
for ($i=0; $i<count($indices); $i++) {
  // Rang speichern wie oben
  $id = id('IT01', $indices[$i] + 1);
  put($id, $i + 1);
  // Seite in der Abfolge speichern
  $random[$i] = $pages[$indices[$i]];
}

// Neue Seitenabfolge setzen
$random[] = 'FIN';
setPageOrder($random);

Soweit, ich bin für jede Hilfe sehr dankbar!

Als weiterer Nachtrag: Ich habe nun nochmal in die CSV-Datei geschaut, und hier scheint es, dass die Randomisierung bei den ersten 4 Probanden geklappt hat. Dann liegt hier wohl das Problem? Es war so programmiert, dass ab Proband 4 alle die gleiche Liste sahen? Ich hatte insgesamt 97 Probanden.

in SoSci Survey (dt.) by SoSci Survey (53k points)

1 Answer

0 votes

Evtl. liegt der Fehler bei der Ziehung: Unter Anzahl der Zettel pro Interview sind 4 Zettel angegeben, hier hätte ich wohl "1" eintragen müssen?

Ja, das ist korrekt. Denn wenn Sie 4 Zettel ziehen, dann haben Sie keine Variable ZG01 (ich vermute, diese ist im Datensatz leer), sondern ZG01x01, ZG01x02, ZG01x03 und ZG01x04.

In Ihrem PHP-Code haben Sie aber abgefragt:

$code = value('ZG01');

Im Debug-Modus (gelber Pfeil) sollte dann auch eine Warnung erscheinen, dass die Variable ZG01 im Interview noch nicht "angefragt" wurde. In $code ist dann immer [nichts] gespeichert. Und Ihr Filter nimmt in dem Fall, dass der Wert nicht 1, 2 oder 3 ist immer die Variante 4 (else):

if ($code == 1) {
  $rubrik = 'L1';
} elseif ($code == 2) {
  $rubrik = 'L2';
} elseif ($code == 3) {
  $rubrik = 'L3';
} else {
  $rubrik = 'L4';
}

Sie können Ihre Testläufe unter Erhobene Daten überprüfen. Wenn die Variable ZG01 dort noch belegt ist, dann wurde die Anzahl der Zettel pro Interview vermutlich erst nach den Tests geändert.

by SoSci Survey (53k points)
Vielen Dank, nun konnte ich das Problem zumindest nachvollziehen. Ich bin mir nicht sicher warum ich die Anzahl der Zettel auf 4 gesetzt hatte, es war wohl ein Versehen oder Missverständnis.

In meinen Daten finde ich die (belegten) Variablen ZG01_CP, ZG01x01    ZG01x02, ZG01x03 und    ZG01x04, aber keine ZG01.
Wo kommt denn die ZG01_CP her?

Die Debug-Information von meiner Fragebogenseite 8 (die ZG Seite) lautet wie folgt:
Erstelle Fragebogen-Seite Nr. 8
[Inhalt]    Erstelle Frage ZG01
[Information]    Vom Zufallsgenerator ZG01 wurden folgende Codes gezogen: 2, 3, 4, 1
[Inhalt]    Erstelle Frage ZG01
[Information]    Der Zufallsgenerator ZG01 wurde bereits zu einem früheren Zeitpunkt im Interview verwendet, die gezogenen Codes bleiben unverändert: 2, 3, 4, 1
[Information]    value("ZG01_CP") = 96
[Information]    Die Seite zeigt keine Inhalte, automatisch weiter mit Seite Nr. 9

Ich glaube, es ist gar nciht nötig, die ZG01 Frage an sich auf die Seite zu ziehen, der php Code reicht, oder?

Vielen Dank für die schnelle Hilfe!
Das "auf die Seite ziehen" ist notwendig, wenn man im PHP-Code nicht ohnehin question() stehen hat.

> Wo kommt denn die ZG01_CP her?

Das ist eine Zählvariable, die angibt, wie häufig alle Werte schon angezeigt wurden. Vor allem dann sinnvoll, wenn man sehr viele Werte hat (z.B. Gutscheincodes) und jeder max. einmal gezeigt werden darf. Wenn man 4 Werte und 4 Ziehungen hat, dann ist die Variable _CP nicht besonders hilfreich.
Danke!
Ich habe die Anzahl der Zettel nun auf 1 gesetzt, Liste 4 gelöscht und nochmal 6 Testläufe gemacht. Dabei wurden mir die Listen (in dieser Reihenfolge): 2, 3, 1, 2, 3, 2 präsentiert. D.h. es wird wirklich immer zufällig gezogen, und ich kann nur hoffen, dass dann am Ende nach 60 Probanden alle Listen etwa gleich häufig gezeigt wurden?
Nun, rechnerisch werden sie die Varianten 1-3 jeweils 30-mal haben und die Variante 4 (wie schon vorliegend) 69-mal. Statt Variante 4 zu löschen, hätten Sie auch die anderen drei Ziehungen einfach auf 0 setzen können.

Methodisch ist das Vorgehen insofern angreifbar, als sich die 60 Teilnehmer, die jetzt noch mitmachen, vermutlich ein wenig von den 60 unterscheiden, die schon mitgemacht haben.
...