0 votes
in SoSci Survey (dt.) by s116393 (155 points)

Ich habe eine Frage zur zufälligen gewichteten Ziehung von Fragen. Ich habe 4 verschiedene Kategorien von Fragen, die ich Rubriken in meinem Fragenkatalog hinzugefügt habe. Diese 4 Rubriken sind:

MG (36 Fragen: MG01 - MG36)
MV (10 Fragen: MV01 - MV10)
OG (36 Fragen: OG01 - OG36)
OV (16 Fragen: OV01 - OV16)

Jedem Teilnehmer sollen insgesamt 40 zufällig gezogene Fragen aus diesem Pool (bestehend aus insgesamt 98 Fragen) mit folgender Gewichtung gezeigt werden:

MG: 35% (entspricht 14 MG Fragen pro Teilnehmer)
MV: 15% (entspricht 6 MV Fragen pro Teilnehmer)
OG: 35% (entspricht 14 OG Fragen pro Teilnehmer)
OV: 15% (entspricht 6 OV Fragen pro Teilnehmer)

Eine Frage soll pro Teilnehmer selbstverständlich nur einmal vorkommen. Am Ende der Datenerhebung (N=100) sollen die Fragen innerhalb einer Rubrik möglichst gleich häufig angezeigt worden sein.

Wie gehe ich in diesem Fall vor? Ich habe in den Foren bis jetzt keine passende Vorgehensweise für mich gefunden, ich wäre also extrem dankbar für eine ausführliche Erklärung. Ganz lieben Dank im Voraus!

1 Answer

+1 vote
by SoSci Survey (316k points)
selected by s116393
 
Best answer

Ich schlage hier folgende Lösung vor: Legen Sie 4 Zufallsgeneratoren an, einen pro Rubrik.

Als Zettel legen Sie die Kennungen der Fragen hinein.

Stellen Sie weiterhin bitte ein, dass so viele Zettel pro Interview gezogen werden sollen, wie Fragen aus der Rubrik präsentiert werden sollen. Im ersten Zufallsgenerator also z.B. 14 Zettel.

Ich vermute, die Fragen sollen nicht getrennt nach Rubrik präsentiert werden? Dann würden Sie zum Mischen noch folgenden PHP-Code verwenden:

if (!isset($fragen)) {
    $fragen = array_merge(
      array_values(valueList('RG01', NULL, 'label')),
      array_values(valueList('RG02', NULL, 'label')),
      array_values(valueList('RG03', NULL, 'label')),
      array_values(valueList('RG04', NULL, 'label'))
    );
    shuffle($fragen);
    registerVariable($fragen);
}
$frage = loopPage($fragen);
question($frage);
by s116393 (155 points)
Hi, schon einmal vielen Dank für die schnelle Antwort! Allerdings habe ich das Problem, dass ich keinerlei Programmiererfahrung habe und, was HTML- und PHP-Code angeht, absoluter Laie bin. Mit der Erstellung/Verwendung des Zufallsgenerators habe ich bislang keine Vorerfahrung. Daher bräuchte ich leider eine sehr viel ausführlichere (am besten Schritt-für-Schritt) Erklärung für meinen Fall.

Die Informationen auf https://www.soscisurvey.de/help/doku.php/de:create:questions:random bringen mich leider nicht weiter, da sowohl die Funktionen als auch die Platzierung des Zufallsgenerators (für mich als Laien) viel zu oberflächlich beschrieben sind, als dass ich meinen Fragebogen auf dieser Grundlage erstellen könnte.

Die Frage tut mir unglaublich Leid, aber besteht irgendwie die Möglichkeit, mir detailliertere Beschreibungen für mein Vorgehen zukommen zu lassen? Ich weiß, das ist sehr viel verlangt, aber ich bin gerade komplett überfordert.
by SoSci Survey (316k points)
>  Daher bräuchte ich leider eine sehr viel ausführlichere (am besten Schritt-für-Schritt) Erklärung für meinen Fall.

Schritt 1. Legen Sie die 4 Zufallsgeneratoren an und schreiben Sie diie Kennungen der Fragen als Inhalt hinein (eine Frage-Kennung pro Zeile)

Schritt 2. Kopieren Sie den Code, den ich Ihnen geschrieben habe, auf eine Seite im Fragebogen ab wo die Fragen erscheinen sollen. Ziehen Sie die Fragen nicht (!) in den Fragebogen.

Ausführlicher ist es zum Glück nicht :)
by s116393 (155 points)
edited by s116393
Wieder vielen Dank für die schnelle Antwort! Alles klar, diese Schritte sind natürlich wirklich simpel.

Ich bin jetzt dementsprechend vorgegangen und mir wurden für Ihren Code zwei Fehlermeldungen angezeigt:

"Warnung: Bei den geschweiften Klammern stimmt die Anzahl öffnender Klammern (1) nicht mit der Anzahl schließender Klammern (0) überein."

und

"Warnung: Die Anzahl öffnender Klammern (11) und schließender Klammern (12) stimmt hier nicht überein: );"

Den Code habe ich dann folgendermaßen angepasst (eine geschweifte schließende Klammer am Ende hinzugefügt und eine überflüssige normale schließende Klammer entfernt):

if (!isset($fragen)) {
    $fragen = array_merge(
      array_values(valueList('RG01', NULL, 'label')),
      array_values(valueList('RG02', NULL, 'label')),
      array_values(valueList('RG03', NULL, 'label')),
      array_values(valueList('RG04', NULL, 'label'))
    );
    shuffle($fragen);
    registerVariable($fragen);
$frage = loopPage($fragen);
question($frage);
}

Wäre der Code so noch korrekt? Beim Starten der Seite im Debug Modus wird mir dann auch eine zufällig gezogene Frage (es müssen dort verschiedene Schieberegler eingestellt werden) korrekt angezeigt. Wenn ich jetzt auf "Weiter" klicke, ohne die Frage zu beantworten bzw. die Frage nur zum Teil beantworte, erhalte ich folgende Fehlermeldung:

"Dieses Interview versuchte, auf Seite Nr. 2 (Kennung Bewertung) zu springen, die bei der Ausgabe der aktuellen Darstellung bereits verarbeitet wurde. Bitte überprüfen Sie, ob goToPage() eine Schleife erzeugt."

Beantworte ich die Frage komplett und klicke dann auf "Weiter", springe ich - obwohl mir in der Fortschrittsanzeige angezeigt wird, dass die 39 weiteren zufällig ausgewählten Fragen noch erscheinen sollten - auf die letzte Seite (Ende) des Fragebogens. Was mache ich falsch?

Vielen Dank schon einmal für die weitere Hilfe!
by SoSci Survey (316k points)
Fast ... die runde Klammer nach registerVariable() war falsch und muss eine geschweifte sein. Ich habe das oben in meiner Antwort korrigiert.
by s116393 (155 points)
So funktioniert es :) wirklich überragend, ganz lieben Dank für die nette und schnelle Hilfe!!!

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

...