0 votes
in SoSci Survey (dt.) by s194947 (120 points)

Liebes SoScisurvey-Team,

für meine Onlinestudie plane ich 117 positive und 117 negative Items raten zu lassen.

Die Items sollen per Zufall gezogen werden, so dass jede Versuchsperson 20 positive und 20 negative Items bewerten kann. Die Rating-Fragen bleiben gleich.

Ich bin leider kein Programmierprofi und komme allein nicht weiter.

Den Zufallsgenerator habe ich angelegt. Es gibt eine Liste mit Zetteln für die positiven Items und eine Liste mit den negativen Items.

Vermutlich muss ich dann noch einen Platzhalter einbauen, so dass das Item oben bei dem Fragebogen angezeigt wird und dann dieselben Fragen erscheinen.

Nun komme ich nicht weiter, wie ich beides kombiniert und realisiert bekomme.

Dankeschön vorab!

Liebe Grüße

1 Answer

0 votes
by SoSci Survey (327k points)

Ich bin leider kein Programmierprofi und komme allein nicht weiter.

Keiner Sorge, Sie haben jetzt die Gelegenheit, Ihre Programmier-Fähigkeiten aufzupolieren!

Es gibt eine Liste mit Zetteln für die positiven Items und eine Liste mit den negativen Items.

Daraus lese ich, dass Sie zwei Zufallsgeneratoren angelegt haben? Einen für postive und einen für negative Items. Gut.

Ich würde empfehle, dass Sie die Codes manuell vergeben (also in Excel vergeben und dann Copy&Paste in den Zufallsgenerator übernehmen), sodass die positiven Items die Codes 1001 bis 1117 haben und die negativen die Codes 2001 bis 2117. Das erleichtert Ihnen alles weitere.

Was Sie dann weiter machen: Sie ziehen aus jedem Zufallsgenerator 20 Items, lesen diese Ziehung mittels valueList() aus, mischen die beiden Listen zusammen, z.B. mittels array_merge() und shuffle() und präsentieren das Ganze am besten über eine Multi-Level-Konstruktion: Multi-Level Struktur

Wenn Sie beim Aufpolieren der Programmierkenntnisse Unterstützung brauchen, posten Sie gerne weitere (spezifische) Fragen hier im Support.

by s194947 (120 points)
Vielen Dank für die schnelle Rückmeldung und das Mut machen!
 
Ich habe zielgerichtet weiter geknobelt und kann nun die einzelnen Elemente nicht miteinander verbinden.

Die (Zahlen)Codes für die Textstimuli habe ich angepasst in der Rubrik "RD Randomisierung", hier gibt jeweils eine Unterrubrik für positiv formulierte Textstimuli "RD02" mit den Codes für die einzelnen Textstimuli (2001 bis 2117) und eine Unterrubrik "RD01" für negativ formulierte Textstimuli (mit den Codes: 1001 bis 1117). Weiter habe ich bei der Maske in der jeweiligen Unterrubrik angegeben, dass jeweils 20 Textstimuli per Zufall gezogen werden sollen, also insgesamt 40 Textstimuli pro VPn. Dann habe ich eine Text-Unterrubrik "RD03", in welcher Kognition steht.  

Es gibt dazu die Rubrik Fragen_Kognitionen (FK), in der die Fragen aufgelistet sind, die für jeden Textstimulus (=Kognition) in zufälliger Reihenfolge abgefragt werden sollen.

"array_merge()" muss vermutlich auch noch eingebaut werden.

Mir fehlt gerade der Überblick, was in welcher Reihenfolge definiert und miteinander verknüpft werden muss, damit pro Teilnehmenden der Fragebogenstudie insgesamt 40 Textstimuli zufällig ausgewählt werden und diese separat nacheinander mit gleichbleibenden Fragen (deren Reihenfolge zufällig variiert) bearbeitet werden.

Mein zusammengewürfelter Code lautet wie folgt:

// 20 negative Kognitionen per Zufallsgenerator auslesen
$codes_n = valueList('RD01', null, 'label');

// 20 positive Kognitionen per Zufallsgenerator auslesen
$codes_p = valueList('RD02', null, 'label');

shuffle($codes_n);
shuffle($codes_p);


//Speichern der codes (z.B. 1001 bis 2117) für jeweilige VP und ihre zu bewertenden Kognitionen
put($codes_p);
put($codes_n);

//Multi-Levelstruktur: 20 pos. und 20 neg. Kognitionen (=Textstimuli) sollen zufällig ausgewählt werden; RD03 ist Kognition

$items = getItems('RD01', 'valid');
foreach ($items as $item) {
  $varID = id('RD01', $item);
  $value = value($varID);
  replace('RD03'.$item.'%', $value);
}
registerVariable($items);

$items = getItems('RD02', 'valid');
foreach ($items as $item) {
  $varID = id('RD02', $item);
  $value = value($varID);
  replace('RD03'.$item.'%', $value);
}
registerVariable($items);

//Fragen der Rubrik FK (Fragen_Kognitionen) in zufälliger Reihenfolge anzeigen
$fragen = array(
  'FK02', 'FK04', 'FK05',
  'FK06', 'FK07');
shuffle($fragen);
registerVariable($fragen);
by SoSci Survey (327k points)
Das klingt doch schonmal alles ganz gut. Ich hake mal an dieser Stelle ein:

shuffle($codes_n);
shuffle($codes_p);

Stattdessen würde ich die beiden Arrays zunächst zusammenfügen und dann mischen:

$codes = array_merge(
    $codes_n,
    $codes_p
);
shuffle($codes);

Lassen Sich sich danach mittels debug() ruhig mal anzeigen, ob das Ergebnis passt:

debug($codes);

Das mit dem put() klappt so noch nicht. Dafür brauchen Sie putList() und eine interne Variable: https://www.soscisurvey.de/help/doku.php/de:create:functions:putlist

Wenn das klappt, kümmern wir uns um die Multi-Level-Struktur. Dafür brauchen Sie einen zweiten Fragebogen und den Befehl multiLevelDown().
by s194947 (120 points)
Die Korrektur hat geklappt. Von den 117 negativen Items und 117 positiven Items werden jeweils 20 zufällig gezogen und in gemischter Reihenfolge präsentiert.

An dem put() habe ich mich versucht.

Mit dem Befehl mutliLevelDown() kann ich leider ohne die entsprechenden Vorkenntnisse auch nicht weiter machen.

Gibt es substanziellere Informationen, anhand derer ich den intendierten FB programmieren kann?

Mein aktueller Code ist wie folgt:


// 20 negative Kognitionen per Zufallsgenerator auslesen
$codes_n = valueList('RD01', null, 'label');

// 20 positive Kognitionen per Zufallsgenerator auslesen
$codes_p = valueList('RD02', null, 'label');

//beide Arrays zusammenfügen und dann mischen
$codes = array_merge(
    $codes_n,
    $codes_p
);
shuffle($codes);

debug($codes);

//Speichern der codes (z.B. 1001 bis 2117) für jeweilige VP und ihre zu bewertenden Kognitionen
//put($codes_p);
//put($codes_n);

//Multi-Levelstruktur: 20 pos. und 20 neg. Kognitionen sollen zufällig ausgewählt werden
$items = getItems('RD01', 'valid');
foreach ($items as $item) {
  $varID = id('RD01', $item);
  $value = value($varID);
  replace('%Kognition'.$item.'%', $value);
}
registerVariable($items);


//Fragen der Rubrik FK (Fragen_Kognitionen) in zufälliger Reihenfolge anzeigen
$fragen = array(
  'FK02', 'FK04', 'FK05',
  'FK06', 'FK07');
shuffle($fragen);
registerVariable($fragen);


//Anlegen interner Variablen, Fragen für alle Kognitionen unter FK12 angelegt.
$content_n = value('RD01', 'csv');
putList('FK12', $content_n);
$content_p = value('RD02', 'csv');
putList('FK12', $content_p);


replace('%Kognition%', label('RD01'));
show ('RD01', ['%Kognition%' => value('FK12')
]);


Soweit ich das verstehe, muss multileveldown() auf einer vorgelagerten Fragebogenseite eingefügt werden...

Viele Fragezeichen und wenig Struktur.

Danke vorab für Ihre weitere Unterstützung!
by SoSci Survey (327k points)
> Mit dem Befehl mutliLevelDown() kann ich leider ohne die entsprechenden Vorkenntnisse auch nicht weiter machen.

Haben Sie das Multi-Level-Kapitel gelesen? Da ist in Beispiel eigentlich ein Programmier-Beispiel verlinkt das genau auf Ihren Anwendungsfall passt: https://www.soscisurvey.de/help/doku.php/de:create:functions:randomuse#anwendungsbeispiel
by s194947 (120 points)
Liebes Sosci-Team,

vielen Dank für den Link! Den habe ich leider übersehen.

Mir ist gerade eine grundsätzliche Verständnisfrage gekommen zur Organisation der für meine Umfrage relevanten Fragen und Items in Form von Rubriken, Fragen und Items, wenn zusätzlich per PHP-Code Zusatzfunktionen der Umfrage hinzugefügt werden.

Können Sie mir bitte Rückmelden, ob diese notwendigen Schritte unabdingbar sind?

Zum angedachten Fragebogen: Es sollen insgesamt 117 positive und 117 negative Items bezüglich 5 Fragen bewertet werden. Ich suche nach einer "eleganten Lösung", in der ich keine zwei Rubriken mit jeweils 585 Fragen (117 Items * 5 Fragen) und dann im Fragebogen 234 Seiten (2 * 117) anlegen muss, die dann per Zufallsfunktion gezogen werden.
Muss jeweils eine Rubrik mit "Positive Items" und eine mit "Negative Items" zuvor angelegt werden? Um dann eine separate Rubrik mit dem Zufallsgenerator anzulegen, in welchem als „Zettel“ die einzelnen Items mit ihren (String/Text-)Labels hinterlegt sind? Im Zufallsgenerator habe ich eine „Frage“ mit „Positiven Items“ angelegt, aus welcher der Zufallsgenerator 20 Items zufällig auswählt. Diese Items sind nummeriert (2001 bis 2127) und mit ihrem Text im „Zettel-Kasten“ hinterlegt. Das gleiche habe ich für die negativen Items gemacht (Nummerierung 1001 bis 1117). Dann habe ich in der Rubrik „Zufallsgenerator“ einen Text „Kognition“ eingefügt, mit der Absicht ihn als Platzhalter für die Befragung zu nutzen. „Kognition“ soll dann immer durch das gezogene Label des Items ersetzt werden (und dann werden die für alle Items gleichen 5 Fragen gestellt…)

Also müssen für eine „elegante Programmierung“ in der Rubrik mit Fragen und Kognitionen/Items alle entstehenden Variablen händisch angelegt sein oder kann man das weglassen, und schreibt einen PHP-Code der in jedem „Loop“ immer ein spezifisches Array für das jeweilige Item mit der jeweiligen Frage in den Datensatz speichert, wenn das so programmiert ist?

(Aktuell würde ich mir einen Videocall mit Bildschirmsynchronisation wünschen, bei dem diese Fragen sicherlich direkter geklärt werden könnte. Das übersteigt aber sicherlich ihre Ressourcen und ich hoffe, dass über den Online-Support meine Fragen geklärt werden können.)

Ich bin Ihnen für jede Art von Rückmeldung dankbar! Vielen Dank vorab!
by SoSci Survey (327k points)
>  Ich suche nach einer "eleganten Lösung", in der ich keine zwei Rubriken mit jeweils 585 Fragen (117 Items * 5 Fragen) und dann im Fragebogen 234 Seiten (2 * 117) anlegen muss

Die Lösung heißt Multi-Level-Struktur :) Da brauchen Sie die Frage nur einmal und bekommen dafür eine Datenzeile pro Item. Die Items werden dann per Loop abgearbeitet.

> Aktuell würde ich mir einen Videocall mit Bildschirmsynchronisation wünschen, bei dem diese Fragen sicherlich direkter geklärt werden könnte.

Das wird vor allem meine Ressourcen übersteigen ... bei mehr als 30.000 Befragungsprojekten, die in einem Corona-Jahr schon mal auf www.soscisurvey.de laufen. Aber ich biete einmal pro Semester an der LMU ein Seminar zu SoSci Survey an ;)

Sehen Sie sich die multiLevelDown()-Funktion mal an und experimentieren Sie ein wenig damit. Ich denke, dass dann deutlich klarer wird, was Sie da erwartet und was Sie brauchen. Wenn Sie sich in der Anleitung weitere Erklärungen wünschen, dann lassen Sie es mich wissen.

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

...