0 votes
in SoSci Survey (dt.) by s332765 (140 points)
edited by SoSci Survey

Hi,
wie oben beschrieben möchte ich eine randomisierte Gruppeneinteilung nach Soziodemographie (Alter und Geschlecht) vornehmen. Sprich, Stimulus 1 und 2 werden random zugeteilt, allerdings sind Männer/Frauen sowie Alter ungefähr gleich verteilt.

Dafür habe ich die Block-Randomisierung vorgesehen, alllerdings finde ich nicht einen PHP-Code, in dem beide Variablen berücksichtigt werden.
Ich frage auf Seite zwei Geschlecht SD01 (w=1, m=2, d=3) und Alter SD0 (freier Eingabe) ab, auf S.4 ist dann mein Zufallsgenerator mit folgendem Code:

if ((value('SD01') == 1) && (value('SD0') < 42)){
// Zufallsgenerator ST06 einbinden (w, unter 42)
show('ST06');
}else {
// Zufallsgenerator ST07 einbinden (alle anderen)
show('ST07');
}

Ich dachte mir, dass meine Versuchspersonen zwischen 20 und 65 sind und habe daher die Grenze bei 41 Jahre gesetzt.
Wenn ich einen Pretest mache, steht bei den Debug Infos, dass die Einteilung vom Geschlecht abhängig gemacht wurde, allerdings kommt das Alter nirgends vor.
Ich freue mich sehr über Hilfe und bedanke mich im Voraus!!

Viele Grüße

Zusatz: ich habe ChatGbt gefragt, der Vorschlag war folgender:

// PHP-Code hier (ohne php-Tags)
$geschlecht = value('SD01');
$alter = value('SD0');

if ($alter < 42) {
$alter_block = 'u42';
} else {
$alter_block = 'o42';
}

$block = $geschlecht . '_' . $alter_block;

if (in_array($block, ['1_u42', '1_o42', '2_u42', '2_o42', '3_u42', '3_o42'])) {
if (random() < 0.5) {

show('ST06');
} else {

show('ST07');
}
} else {
show('ST07');
}

der Code funktioniert auch, allerdings weiß ich nicht, ob das zu viele Blöcke sind, da ich mit max. 40 Versuchspersonen rechne.

1 Answer

0 votes
by SoSci Survey (352k points)

allerdings weiß ich nicht, ob das zu viele Blöcke sind, da ich mit max. 40 Versuchspersonen rechne.

Wie viele Blöcke möchten Sie denn machen? Bei nur zwei möglichen Stimuli ist das Risiko jetzt nicht allzu groß, dass Sie durch zu kleine Teilgruppen irgendwelche Verzerrungen verursachen. Also, im Prinzip können Sie auch 20 Gruppen machen.

Was den Code von ChatGPT angeht: Das ist inhaltlich halt Blödsinn, weil der Chatbot wenig Ahnung von SoSci Survey hat und hier überhaupt nicht beachtet wurde, dass Sie eine Gleichverteilung innerhalb der Gruppen haben wollen. Was der Code macht, ist einfach eine uneingeschränkte Zufallsauswahl (aber aus zwei Zufallsgeneratoren) - die hätten Sie auch einfacher haben können.

Wenn Sie 3x2 Gruppen haben wollen, wäre Ihr Weg von oben schon nicht ganz schlecht. Sie könnten die beiden IF-Filter aber schachteln:

if (value('SD01') == 1) {
  if (value('SD0') < 42) {
    show('ST06');
    put('IV01_01', value('ST06'));
  } else {
    show('ST07');
    put('IV01_01', value('ST07'));
  }
} elseif (value('SD01') == 2) {
  if (value('SD0') < 42) {
    show('ST08');
    put('IV01_01', value('ST08'));
  } else {
    show('ST09');
    put('IV01_01', value('ST09'));
  }
} else {
  if (value('SD0') < 42) {
    show('ST10');
    put('IV01_01', value('ST10'));
  } else {
    show('ST11');
    put('IV01_01', value('ST11'));
  }
}

So bekommen Sie abhängig von der Gruppe (mit 6 Gruppen) in IV01_01 den passenden Wert. Damit können Sie dann den Stimulus anzeigen.

Falls Sie den Stimulus schon per HTML-Code im Zufallsgenerator untergebracht haben, ist das put() für die Auswertung dennoch hilfreich.

Allgemeiner Hinweis zur Nutzung von AI-Tools: ChatGPT hat die Anleitung von SoSci Survey nicht gelesen. Deshalb bekommen Sie von ChatGPT im Wesentlichen nur Hallizunationen zur Bedienung von SoSci Survey. Wenn Sie mit generativer KI arbeiten möchten: Gemini kennt die Anleitung zu SoSci Survey. Beachten Sie aber bitte, dass die Antworten von generativer AI selbst dann nur mit einer Chance von ca. 65% korrekt sind.

by s332765 (140 points)
Hi, danke für die Rückmeldung!
Der Versuch mit chatgbt war auch nur aus Verzweiflung, ich höre natürlich deutlich lieber auf das Forum! Daher ist auch die Idee mit den Gruppen nicht meine eigene.
Eigentlich möchte ich Folgendes: Meine zwei Experimentalgruppen (EG1 sieht Stimulus1, EG2 sieht Stimulus2) sollen ausgeglichen sein - ausgeglichen im Sinne von Anzahl der Versuchspersonen und eben auch hinsichtlich Alter und Geschlecht.

Falls Sie einen Vorschlag haben, der einfacher als diese Gruppen-Verteilung ist, würde ich mich freuen!
Viele Grüße
by SoSci Survey (352k points)
Naja, die zufällige Gruppenzuordnung hat man sich dereinst mal ausgedacht, weil die Chance dabei ziemlich gut ist, dass sich die beiden Experimentalgruppen eben gerade nicht systematisch unterscheiden. Man könnte es also riskieren, einfach nur ganz klassisch zu randomisieren.

Allerdings sind N=40 jetzt keine großen Zahlen, und wenn Sie ein bisschen mehr Sicherheit haben möchten als "es drauf ankommen lassen", dann ist die Block-Randomisierung mit dem Code von oben so schlecht nicht. Sie müssten dafür halt 6 Zufallsgeneratoren und eine interne Variable anlegen.
by s332765 (140 points)
Guten Morgen, ich bin da leider einfach nicht so tief drin, dass ich das ganz checke.
Kommen in meine Zettel beim Zufallsgenerator dann die zwei Links? Und für was lege ich die interne Variable ein?
Was ich berücksichtigen will ich ja Geschlecht SD01 (w=1, m=2, d=3) und Alter SD0 oder SD02 mit Freitexteingabe.
by SoSci Survey (352k points)
edited by SoSci Survey
> Und für was lege ich die interne Variable ein?

Sie ziehen - je nach demopgrafischer Gruppe - aus 6 unterschiedlichen Zufallsgeneratoren. Das gewährleistet die Gleichverteilung in jeder Gruppe.

Aber es ist unhandlich, wenn Sie die Gruppenzordnung jedesmal in einer anderen Variale gespeichert haben. Die interne Variable bekommt daher jeweils eine Kopie der Zufallsgenerator-Variable - via put() - sodass Sie dann bei der Anzeige des Stimulus einfach auf diese interne Variable referenzieren können.

> Was ich berücksichtigen will ich ja Geschlecht SD01 (w=1, m=2, d=3) und Alter SD0 oder SD02 mit Freitexteingabe.

Ja, das passt zu den Code in meiner Antwort, welcher im Prinzip ja nur eine Ergänzung Ihres (ersten) Codes aus der Frage ist.

Darunter fehlt dann nur ein z.B. ein

if (value('IV01_01') == 1) {
  html('<div><img src="bild1.png"></div>');
} else {
  html('<div><img src="bild2.png"></div>');
}

... also, falls Sie exemplarisch ein Bild anzeigen wollen.
by s332765 (140 points)
Okay, danke !!
Sorry, dass es so banale Fragen sind..
- Wenn Sie sagen, dass in die interne variable die sechs zufallsgeneratoren kommen, ist das dann sechs mal der code, den Sie geschickt haben...?
- Um noch den unteren Teil einzufügen: Wie mache ich das bei einem Youtube video? Ich habe dieses ja nicht lokal gespeichert und damit hat es keinen eigentlichen dateinnamen..

Danke!
by SoSci Survey (352k points)
>  ist das dann sechs mal der code, den Sie geschickt haben...?

Nein, nur einmal. In dem Code oben steht schon sechsmal put() drin :)

> Wie mache ich das bei einem Youtube video?

Erstellen sie zwei Texte im Fragenkatalog mit dem HTML-Code für das YouTube-Video (s. Anleitung) und dann

if (value('IV01_01') == 1) {
  show('TX01');
} else {
  show('TX02');
}
by s332765 (140 points)
Danke für die Geduld und gleich brauchen Sie noch mehr..
also, ich habe in einer Rubrik zwei Texte erstellt, bei dem jeweils der HTML-Code für das Video drin ist, die heißen ST_08 und ST_09.
Wenn ich eine interne Variable erstelle (nach Anleitung, neue Rubrik, dann Frage "Interne Variable") kann ich keinen Code eingeben. Ich dachte, das muss ich?
by SoSci Survey (352k points)
Die Interne Variable ist einfach nur eine neue Spalte im Datensatz. Davon benötigen Sie nur die Kennung.

Der PHP-Code kommt direkt in den Fragebogen - und zwar an die Stelle, wo der Stimulus erscheinen soll.
by s332765 (140 points)
ach so, das macht sinn.
In Ihrem Code steht ja ST_06.. bis ST_10. Mit was sind diese Variablen gefüllt? Sind das 3 mal die 2 Stimuli, die ich über den HTML code eingeben soll?
by s332765 (140 points)
Update:
Ich werde jetzt die Variable Alter weglassen und binde nur das Geschlecht mit diesem Code ein:
if (value('SD01') == 1) {
  // Zufallsgenerator ST10 einbinden (Frauen)
  show('ST10');
} else {
  // Zufallsgenerator ST11 einbinden (alle anderen)
  show('ST11');
}

Ich hoffe, das ist richtig.
Danke dennoch für die Hilfe. Ein schönes Wochenende : )
by SoSci Survey (352k points)
Das mit dem put() sollten sie dennoch machen, damit Sie in der Auswertung direkt sehen, in welcher Gruppe jemand war.

if (value('SD01') == 1) {
  // Zufallsgenerator ST10 einbinden (Frauen)
  show('ST10');
  put('IV01_01', value('ST10'));
} else {
  // Zufallsgenerator ST11 einbinden (alle anderen)
  show('ST11');
  put('IV01_01', value('ST11'));
}

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

...