0 votes
in SoSci Survey (dt.) by s179159 (150 points)

Hallo,

Ich würde gerne für mein Experiment einen Zufallsgenerator einbauen, der meine Porbanden in 3 Gruppen aufteilt.
In diesen drei Gruppen sollen ungefähr die gleiche Anzahl an Frauen sowie Männern sich befinden.

Ich habe bereits einen Code für die Zuweisen zu den jeweiligen Teil des Fragebogens, der für die jeweilige Gruppe relevant ist.

if (value('RG1') == 1) {
setPageOrder('CGL,CGBJ,CGTF,end');}

elseif (value('RG1') == 2) {
setPageOrder('EX1,EX3,EX4,EX5,EX6,end');}

elseif (value('RG1') == 3) {
setPageOrder('ET1,ET3,ET4,ET5,ET6,end');}

Wo kann ich hier einbauen, dass eben auf den Faktor Geleschterverteilung geachtet wird?
Muss ich hierzu einen weiteren Zufallsgenerator einfügen bzw. an die sozialdemo.Frage des Geschlechtes anknüpfen ?

Vielen DanK für die HIlfe!

1 Answer

0 votes
by SoSci Survey (328k points)

In diesen drei Gruppen sollen ungefähr die gleiche Anzahl an Frauen sowie Männern sich befinden.

Sie suchen m.E. diese Anleitung: Block-Randomisierung

by s179159 (150 points)
Vielen Dank!

Wäre dies hier die richitge Ausführung der Block-Randomisierung im Zusammenhang mit einem bereits existierenden Zufallsgenerator ?
Würde dieser Code erzielen, dass in jeweils den 3 Gruppen, ungefähr gleich viele Männer wie Frauen verteilt sind ?

if (value('SD01') == 1) {
  // Zufallsgenerator RG01 einbinden (Männer)
  show('RG1');

} elseif (value(‚SD01‘) == 2) {
  // Zufall'sgenerator RG1 einbinden (Frauen)
  show('RG1');

}elseif (value(‚SD01‘) == 3) {
// Zufallsgenerator RG1 einbinden (Diverse)
  show('RG1');
}


if (value('RG1') == 1) {
    setPageOrder('CGL,CGBJ,CGTF,end');
}
elseif (value('RG1') == 2) {
    setPageOrder('EX1,EX3,EX4,EX5,EX6,end');
}
elseif (value('RG1') == 3) {
    setPageOrder('ET1,ET3,ET4,ET5,ET6,end');
}
by SoSci Survey (328k points)
Nein, für eine Block-Randomisierung brauchen Sie für jede Gruppe eine eigene Kopie des Zufallsgenerators. Sonst funktioniert es nicht.
by s179159 (150 points)
Und dann kann ich einfach für die Block-Randomisierung die gleiche Einteilung vom Zufallsgenerator der Gruppen verwenden oder ?

if (value('SD01') == 1) {
  // Zufallsgenerator einbinden (Männer)
  show('RD04‘);
}
elseif (value(‚SD’01‘) == 2) {
  // Zufallsgenerator einbinden (Frauen)
  show(‚RD05‘);
}
elseif (value(‚SD’01‘) == 3) {
// Zufallsgenerator einbinden (Diverse)
  show(‚RD06‘);
}

wobei RD04-6 die Kopie des Zufallsgenerators sind. sprich den gleichen Code enthalten. Habe ich das richtig verstanden ?
by SoSci Survey (328k points)
Am besten kopieren Sie die Ziehung direkt nach Einbinden des passenden Zufallsgenerators mittels put() in eine interne Variable (einmal unter jedem show() für die drei Zufallsgeneratoren). Diese können Sie dann in den weiteren Filtern verwenden:

if (value('SD01') == 1) {
  // Zufallsgenerator RG01 einbinden (Männer)
  show('RG01');
  put('IV01_01', value('RG01'));
} elseif (value('SD01') == 2) {
  // Zufall'sgenerator RG1 einbinden (Frauen)
  show('RG02');
  put('IV01_01', value('RG02'));
} elseif (value('SD01') == 3) {
// Zufallsgenerator RG1 einbinden (Diverse)
  show('RG03');
  put('IV01_01', value('RG03'));
}

Und Vorsicht: Ihr Word hat da komische Sachen mit den Anführungszeichen gemacht.
by s179159 (150 points)
Ersten vielen Danke für die Antwort.

Leider erschließen sich mir neue Fragen aufgrund Ihrer Antwort.

- Ersten was genau verstehen Sie unter dem Begriff "Ziehung" ? - meinen Sie den abgebildeten Code? oder was genau soll diese Ziehung sein ?

- Muss ich diesen Geschlechtercode/ verteilung nicht direkt nach der entsprechenden Geschlechterfrage in meinem Fragebogen stellen?
weil ich habe anschließend noch weiter Sozopdemo. Fragen, die zu beantworten sind, bevor der eigentliche Zufallsgenerator in die Drei Experiment Gruppen aufteilt, zum Einsatz kommt.

- Interne Variable: ich habe nun eine Interne Variable angelegt. Hierfür brauche ich nur eine, die eben die Daten vom Experiment der drei Gruppen gesondert speichert oder ?

Und leider vermerkt mein System, dass es die Funktionen Put() und Show() nicht bekannt sind.

Es tut mir leid, dass ich lästig bin, aber ich blicke echt nicht mehr durch mit diesem Zufallsgenerator
by SoSci Survey (328k points)
> - Ersten was genau verstehen Sie unter dem Begriff "Ziehung" ? - meinen Sie den abgebildeten Code? oder was genau soll diese Ziehung sein ?

Die Ziehung erfolgt in dem Moment, wo SoSci Survey den Zufallsgenerator einbindet. Also entweder weil man diesen in die Seite gezogen hat (sollten Sie NICHT machen) oder in Ihrem Code durch das show('RG01')

> Muss ich diesen Geschlechtercode/ verteilung nicht direkt nach der entsprechenden Geschlechterfrage in meinem Fragebogen stellen?

Der PHP-Code oben stellt die experimentelle Zufallsziehung dar. War das die Frage?

> - Interne Variable: ich habe nun eine Interne Variable angelegt. Hierfür brauche ich nur eine, die eben die Daten vom Experiment der drei Gruppen gesondert speichert oder ?

Genau, diese Variable speichert, welcher Experimentalgruppe die Person zugewiesen wurde.

> Und leider vermerkt mein System, dass es die Funktionen Put() und Show() nicht bekannt sind.

Auch dann, wenn Sie die Funktionsnamen in Kleinbuchstaben schreiben?
by s179159 (150 points)
Vielen Dank!
Bei diesem Code sagt mir eben das System an, dass es die Befehle put() und show() nicht erkennt. auch wenn diese klein geschrieben sind.

if (value('SD01') == 1) {
  // Zufallsgenerator  einbinden (Männer)
   show('RD04');
  put('IV01_01', value('RD04'));

} elseif (value('SD01') == 2) {
  // Zufallsgenerator einbinden (Frauen)
  show('RD05');
  put('IV01_01', value('RD05'));

} elseif (value('SD01') == 3) {
// Zufallsgenerator RG1 einbinden (Diverse)
  show('RG1');
  put('IV01_01', value('RG1'));
}

Dieser Code stellt die Zufallsverteilung nach Geschlechter dar, sofern ich das nun richtig verstanden habe. SD01- ist die Variable im Fragebogen hinterlegt, die nach dem Geschlecht fragt.

RG1/RD04/RD05 sind jeweils die Zufallsgeneratoren, die in meine 3 Experimentellen Gruppen aufteilen, wobei diese die gleiche aufteilung vorweisen.

Wo muss ich nun diesen obigen PHP code einbetten ? Direkt nach der Frage als PHP Code im Fragenkatalog hinterlegen, oder erst am Ende der Sozialdemographischen Daten, die jeder ausfüllen muss, bevor es zur der Aufteilung in die Experimentallen Gruppen mit dem untrigen Code kommt.

// Zufallsgenerator für Divers
if (value('RG1') == 1) {
    setPageOrder('CGL,CGBJ,CGTF,end');
}
elseif (value('RG1') == 2) {
    setPageOrder('EX1,EX3,EX4,EX5,EX6,end');
}
elseif (value('RG1') == 3) {
    setPageOrder('ET1,ET3,ET4,ET5,ET6,end');
}


( Dieser Code wurde für die anderen Zufallsgenerators RD04/ RD05 ebenfalls erstellt )

ICh bin mir Unsicher, wo ich nun welchen Code einbauen muss.
by SoSci Survey (328k points)
Der zweite Code sorgt dafür, dass der Fragebogen entsprechend der gezogenen Zufallszahl angepasst wird (bzw. eben die Seitenabfolge).

Tragen Sie hier statt RG1 die Kennung der neuen internen Variable IV01_01 ein.

> Bei diesem Code sagt mir eben das System an, dass es die Befehle put() und show() nicht erkennt. auch wenn diese klein geschrieben sind.

Könnten Sie die Fehlermeldung bitte einmal im Wortlaut posten? Danke.
by s179159 (150 points)
Ok, ich habe nun das RG1 auf IV01_01 geändert.

Dieser Code wird am Ende der Soziodemo.Daten angelegt, sprich beim nächsten "Weiter"-Klicken wird man einer der Zufallsgruppen zugeordnet. Ist die Positionierung  richtig dieses Codes ?
Außerdem müssen ALLE 3 Zufallsgeneratoren auch auf der gleichen Seite platziert werden, habe ich das richtig verstanden aus dem Manual?
 


Dies wäre der genaue Wortlaut :

Warnung: Unerwartetes Element:   show - fehlt hier vielleicht ein Semikolon (;) oder Anführungszeichen?

    show

Warnung: Die Funktion   put() ist nicht bekannt.

Warnung: Die Funktion   show() ist nicht bekannt.
by SoSci Survey (328k points)
>  sprich beim nächsten "Weiter"-Klicken wird man einer der Zufallsgruppen zugeordnet.

Wahrscheinlich schon vor dem "Weiter". Die können Sie aber detailliert in der Debug-Information nachvollziehen: https://www.soscisurvey.de/help/doku.php/de:create:debugging

> Warnung: Die Funktion   put() ist nicht bekannt.

Mich irritieren die vielen Leerzeichen davor. Kann es sein, dass Sie den Code aus Word kopiert und dabei geschützte Leerzeich mitkopiert haben?

Stellen Sie bitte nochmal sicher, dass vor put() und show() keine oder nur "normale" Leerzeichen sind.
by s179159 (150 points)
Ich habe nun die Leerstellen gelöscht, und anscheinend, was dies wirklich das Problem!

Vielen leiben dank!

Jetzt hab ich nur noch diese Fehlermeldung beim Code. Fällt Ihnen auf, wo ich ein Semikolon vergessen haben könnte?

Warnung: Unerwartetes Element: show - fehlt hier vielleicht ein Semikolon (;) oder Anführungszeichen?
  show


show('RD04');

Müssen ALLE 3 Zufallsgeneratoren auch auf der gleichen Seite platziert werden, habe ich das richtig verstanden aus dem Manual?
by SoSci Survey (328k points)
Was steht denn *vor* der show()-Zeile?

> Müssen ALLE 3 Zufallsgeneratoren auch auf der gleichen Seite platziert werden

Nein, Sie dürfen gar keinen der Zufallsgeneratoren nirgendwo in den Fragebogen ziehen (das ist eine bayerische doppelte Verneinung, die als Verstärkung gilt ... also: nicht reinziehen). Das show() ist wie das question() äquivalent zum hineinziehen. Und Sie möchten ja nicht, dass aus allen drei gezogen wird, sondern nur aus dem einen passenden. Das macht das show()
by s179159 (150 points)
elseif (value('SD01') == 3) {
// Zufallsgenerator RG1 einbinden (Diverse)
show('RG1');
put('IV01_01', value('RG1'));
}

das ist der Code, bei dem das show() anspringt ...

> Danke für die Hilfe mit dem Zufallsgenerator !
by SoSci Survey (328k points)
Genau. Abgesehen davon, dass ich ziemlich sicher bin, dass es RG01 heißen muss und nicht RG1.

In dem Moment wo die Variable SD01 den Wert 3 hat, wird dieser Filter-Zweig aktiv. Dann wird das show() aufgerufen. Selbiges aktiviert den Zufallsgenerator und zieht einen Wert, der dann in der Variable RG01 abgelegt wird.

Ob das mit den Zufallsgeneratoren richtig läuft sehen Sie daran, dass im Datensatz - abhängig von SD01 - immer nur einer der Zufallsgeneratoren einen Wert hat und dass dieser Wert dann auch nochmal in IV01_01 steht.
by s179159 (150 points)
VIELEN LIEBEN DANK für die ganze Hilfe mit dem Code und dem Zufallsgenerator. Hat mir wirklich das Leben gerettet!

Warnung: Unerwartetes Element: show - fehlt hier vielleicht ein Semikolon (;) oder Anführungszeichen?
  show


Mir zeigt es diese Fehlermeldung an, und ich weiss nicht, wo in dem obigen angeführten Code (voherige Nachricht) der Fehler sein würd .
Könntet Ihr mir da noch einmal helfen ?
by SoSci Survey (328k points)
Hmm ... in dem Code oben sehe ich keinen offensichtlichen Fehler. Posten Sie doch bitte nochmal Ihren kompletten PHP-Code, dann finden wir auch den Fehler noch :)
by s179159 (150 points)
if (value('SD01') == 1) {
  // Zufallsgenerator  einbinden (Männer)
show('RD04');
put('IV01_01', value('RD04'));

} elseif (value('SD01') == 2) {
  // Zufallsgenerator einbinden (Frauen)
show('RD05');
put('IV01_01', value('RD05'));

} elseif (value('SD01') == 3) {
// Zufallsgenerator RG1 einbinden (Diverse)
show('RG1');
put('IV01_01', value('RG1'));
}



// Zufallsgenerator für Divers
if (value('IV01_01') == 1) {
    setPageOrder('CGL,CGBJ,CGTF,end');
}
elseif (value('IV01_01') == 2) {
    setPageOrder('EX1,EX3,EX4,EX5,EX6,end');
}
elseif (value('IV01_01') == 3) {
    setPageOrder('ET1,ET3,ET4,ET5,ET6,end');
}

// Zufallsgenreator für Männer
if (value('IV01_01') == 1) {
    setPageOrder('CGL,CGBJ,CGTF,end');
}
elseif (value('IV01_01') == 2) {
    setPageOrder('EX1,EX3,EX4,EX5,EX6,end');
}
elseif (value('IV01_01') == 3) {
    setPageOrder('ET1,ET3,ET4,ET5,ET6,end');
}

// Zufallsgenerator für Frauen
if (value('IV01_01') == 1) {
    setPageOrder('CGL,CGBJ,CGTF,end');
}
elseif (value('IV01_01') == 2) {
    setPageOrder('EX1,EX3,EX4,EX5,EX6,end');
}
elseif (value('IV01_01') == 3) {
    setPageOrder('ET1,ET3,ET4,ET5,ET6,end');
}


das hier wäre der komplette PHP- Code
by SoSci Survey (328k points)
Also --- unten den Code brauchen Sie nur einmal, nicht dreimal. Da sollten Sie zwei Blöcke löschen.

Was die Fehlermeldung angeht... Kopieren Sie bitte mal den Code von oben aus Ihrem Post in den Fragebogen. Dort sind dann keine komischen Leerzeichen enthalten, die Ärger machen könnten. Ich vermute stark, dass es weiterhin daran liegt.

Auf welche Zeile bezieht sich die Fehlermeldung denn?

Und prüfen Sie bitte nochmal das hier:

show('RG1');
put('IV01_01', value('RG1'));

Ich bin weiterhin ziemlich sicher, dass RG1 falsch ist und die Kennung RG01 lauten müsste.
by s179159 (150 points)
es hat nun alles geklappt !!! super lieben Dank !
Ich habe RG01 umbenannt in RG1. deswegen stimmt das so schon :)
by SoSci Survey (328k points)
Schön, dass es funktioniert, aber ...

> Ich habe RG01 umbenannt in RG1

Die Variable vielleicht, die in put() angesprochen wird. Aber beim show() muss die Frage-Kennung stehen - und die können Sie nicht ändern.

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

...