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,

habe ich es richtig verstanden, dass man die beiden Codes so kombinieren muss?

$zahl = value('ZU01');  // Zufallzahl wurde von ZU01 gezogen
if ($zahl == 1) {
  setPageOrder('// Teil 1: Liste der Fragen erstellen und mischen
if (!isset($fragen)) {
  $fragen = array(
    'qK01',
    'qK02',
    'qK03',
    'qK04',
    'qK05',
    'qK06',
    'qK07',
    'qK08',
    'qK09',
    'qK10'

  );
  // Die Liste zufällig mischen
  shuffle($fragen);
  // Die Rotation für eine eventuelle Wiederholung der Seite zwischenspeichern
  registerVariable($fragen);
}');

} elseif ($zahl == 2) {
  setPageOrder('// Teil 1: Liste der Fragen erstellen und mischen
if (!isset($fragen)) {
  $fragen = array(
    'qR01',
    'qR02',
    'qR03',
    'qR04',
    'qR05',
    'qR06',
    'qR07',
    'qR08',
    'qR09',
    'qR10',);
  // Die Liste zufällig mischen
  shuffle($fragen);
  // Die Rotation für eine eventuelle Wiederholung der Seite zwischenspeichern
  registerVariable($fragen);
}


');
} else {
  setPageOrder('// Teil 1: Liste der Fragen erstellen und mischen
if (!isset($fragen)) {
  $fragen = array(  // Liste der Frage-Kennungen
    'qU01',
    'qU02',
    'qU03',
    'qU04',
    'qU05',
    'qU06',
    'qU07',
    'qU08',
    'qU09',
    'qU10'
  );
  // Die Liste zufällig mischen
  shuffle($fragen);
  // Die Rotation für eine eventuelle Wiederholung der Seite zwischenspeichern
  registerVariable($fragen);
}');
}

Wenn ich dies mache, dann erhalte ich für jede Kennung folgenden Hinweis: Allerdings finde ich nicht das Problem. Haben Sie auf die beiden Hinweise eine Antwort?


Oder muss ich den Zufallsgenerator, den Code der Randomisierung und die drei Codes der Rotation lediglich auf eine Seite packen? Wie wäre in diesem Fall die richtige Reihenfolge? Wenn ich es versuche, werden die Fragen nämlich nicht rotiert angezeigt.

Erneut vielen Dank für Ihre Hilfe!

Mit freundlichen Grüßen

related to an answer for: Wiederholung der Fragen aufgrund Rotation
in SoSci Survey (dt.) by s149141 (160 points)
edited by s149141
Tipp: Mit dem Knopf {} kann man Code als solchen formatieren. Ich habe das oben geändert.
Es geht in die richtige Richtung. Abgesehen davon, dass der Code zum Rotieren der Fragen nicht in den setPageOrder()-Befehl darf, nur dessen Ergebnis. Aber bevor wir das vertiefen: Ich hatte Ihrem ursprünglichen Post entnommen, dass Sie auch die Abfolge anderer Seiten ändern möchten... dort stand noch:

$zahl = value('RG01');  // Zufallzahl wurde von RG01 gezogen
if ($zahl == 1) {
  setPageOrder('q1','q2','mainStart-mainEnd','q3');
} elseif ($zahl == 2) {
  setPageOrder('q1','mainStart-mainEnd','q2','q3');
} else {
  setPageOrder('q2','q1','mainStart-mainEnd','q3');
}

Was ist denn daraus geworden? Und was davon waren die gemischten Fragen?
Vielen Dank für Ihre schnelle Unterstützung!

Den Code, welchen Sie oben eingefügt haben, wollte ich verwenden, um die drei Experimentalgruppen zu randomisieren. Da jede Gruppe 10 verschiedene Fragen erhalten soll, welche jeweils auf einer eigenen Seite stehen, hätte ich dies eben mit setPageOrder gemacht.

Genau diese 10 Fragen möchte ich nun für alle drei Experimentalgruppen rotieren. Ich denke, dass Sie das mit "Ich hatte Ihrem ursprünglichen Post entnommen, dass Sie auch die Abfolge anderer Seiten ändern möchten..." meinten.
Aber an der Reihenfolge von q1/q2/q3 möchten sie nichts mehr ändern? Oder doch?

Und in welchem der 4 Seiten(bereiche) q1, q2, q3 und mainStart... war denn die loopPage()-Seite?
Die Bereiche q1, q2, q3 und mainStart waren nur Beispiele von Ihrer Hilfeseite.

Ich habe nochmal etwas Neues versucht, allerdings stimmt es immer noch nicht ganz:

1. Schritt: Ich habe die einzelnen Fragen NICHT in "Fragebogen zusammenstellen" aufgenommen (aufgrund Ihrer Erklärung im Bereich "Rotation").

2. Ich habe für alle drei Experimentalgruppen eine eigene Seite erstellt und jeweils folgenden Code für die Rotation eingegeben:

// Teil 1: Liste der Fragen erstellen und mischen
if (!isset($fragen)) {
  $fragen = array(  // Liste der Frage-Kennungen

    'KO01',
    'KO02',
    'KO03',
    'KO04',
    'KO05',
    'KO06',
    'KO07',
    'KO08',
    'KO09',
    'KO10'
  );
  // Die Liste zufällig mischen
  shuffle($fragen);
  // Die Rotation für eine eventuelle Wiederholung der Seite zwischenspeichern
  registerVariable($fragen);
}

// Teil 2: Fragen anzeigen
$i = loopPage(count($fragen));
question($fragen[$i]);

3. Schritt: Ich habe AUF DIE SEITE VOR DEN DREI ROTATIONEN einen Zufallsgenerator gesetzt und darunter folgenden Code:

$zahl = value('ZU01');  // Zufallzahl wurde von ZU01 gezogen
if ($zahl == 1) {
  setPageOrder('K1');
} elseif ($zahl == 2) {
  setPageOrder('K2');
} else {
  setPageOrder('K3');
}

K1 / K2 / K3 sind die Kennungen meiner drei Rotationscodes.

Nun wird tatsächlich eine Experimentalgruppe gewählt und die Fragen werden randomisiert gestellt. Allerdings werden die Fragen erneut durchlaufen (bereits beantwortet). Das liegt an dem loopPage(), oder? Aber wenn ich diesen weglasse, dann passiert nichts. Gibt es dafür vielleicht einen anderen Code, welcher eine Rotation über mehrere Fragen auf unterschiedlichen Seiten durchführt?

Vielen Dank erneut für Ihre Hilfe!

1 Answer

+1 vote

Die Bereiche q1, q2, q3 und mainStart waren nur Beispiele von Ihrer Hilfeseite.

Es wäre gut gewesen, das gleich in der ersten Frage zu verraten :)

Wenn ich Sie korrekt verstehe, brauchen Sie also überhaupt gar kein setPageOrder(). Sie möchten nur je nach Experimentalbedingung einen unterschiedlichen Pool von Fragen rotieren.

Das können Sie ganz einfach haben. Hier ist nochmal der Code aus Ihrer ersten Frage - also den, die Sie (evtl.?) tatsächlich verwenden wollten:

// Teil 1: Liste der Fragen erstellen und mischen
if (!isset($fragen)) {
  $fragen = array(  // Liste der Frage-Kennungen
    'KO01',
    'KO02',
    'KO03',
    'KO04',
    'KO05',
    'KO06',
    'KO07',
    'KO08',
    'KO09',
    'KO10'
  );
  // Die Liste zufällig mischen
  shuffle($fragen);
  // Die Rotation für eine eventuelle Wiederholung der Seite zwischenspeichern
  registerVariable($fragen);
}


// Teil 2: Fragen anzeigen
$i = loopPage(count($fragen));
question($fragen[$i]);

Das einzige, was Sie entsprechend der Experimentalgruppe ändenr müssen, ist die Liste der Fragen-IDs.

// Zufallszahl
$zahl = value('ZU01');

// Teil 1: Liste der Fragen erstellen und mischen
if (!isset($fragen)) {
  if ($zahl == 1) {
    $fragen = [
      'qK01', 'qK02', 'qK03', 'qK04', 'qK05',
      'qK06', 'qK07', 'qK08', 'qK09', 'qK10'
    ];
  } elseif ($zahl == 2) {
    $fragen = [
      'qR01', 'qR02', 'qR03', 'qR04', 'qR05',
      'qR06', 'qR07', 'qR08', 'qR09', 'qR10'
    ];
  } else {
    $fragen = [
      'qU01', 'qU02', 'qU03', 'qU04', 'qU05',
      'qU06', 'qU07', 'qU08', 'qU09', 'qU10'
    ];
  }
  // Die Liste zufällig mischen
  shuffle($fragen);
  // Die Rotation für eine eventuelle Wiederholung der Seite zwischenspeichern
  registerVariable($fragen);
}

// Teil 2: Fragen anzeigen
$i = loopPage(count($fragen));
question($fragen[$i]);

Sagen Sie doch gleich, dass Sie es gar nicht komplizierter brauchen :)

by SoSci Survey (140k points)
Bitte entschuldigen Sie die Verwirrung!

Genau, ich möchte je nach Experimentalbedingung einen unterschiedlichen Pool von Fragen rotieren. Wenn es jetzt tatsächlich so einfach funktioniert, dann sind Sie heute mein Held des Tages! :)

setPageOrder() hätte ich verwendet, da es laut der Beschreibung für die "Randomisierung von Seiten" verwendet wird. Ich dachte, dies wäre der Fall bei mir.

Ich habe es jetzt ausprobiert und auf den ersten Blick sieht es richtig aus... Ich hätte nur noch kurz ein paar Verständnisfragen, da meine Coding-Kenntnisse offensichtlich nicht sehr gut sind.

1. Die Fragen, welche ich für die drei Experimentalgruppen verwende, muss ich nicht mehr bei "Fragebogen zusammenstellen" hinterlegen, oder?

2. Der erste Code, den Sie in Ihrer letzten Antwort eingefügt haben (Array) fällt nun komplett weg und ich benötige lediglich den zweiten, oder?

Vielen Dank für Ihre Hilfe!
> Held des Tages! :)

Immer wieder gerne :)

> 1. Die Fragen, welche ich für die drei Experimentalgruppen verwende, muss ich nicht mehr bei "Fragebogen zusammenstellen" hinterlegen, oder?

Nein.

> 2. Der erste Code, den Sie in Ihrer letzten Antwort eingefügt haben (Array) fällt nun komplett weg und ich benötige lediglich den zweiten, oder?

Dort steht eigentlich dasselbe, von dem IF mit den drei Gruppen abgesehen. Die eckigen Klammern sind nur eine andere Schreibweise für ein Array. array(1,2,3) == [1,2,3]. Und die Kennungen habe ich nur in weniger Zeilen geschrieben, damit es übersichtlicher wird.
Perfekt!

Vielen Dank für Ihre schnellen Antworten und die ausführliche Hilfe! :)
...