0 votes
in SoSci Survey (dt.) by s162868 (110 points)

Hallo,

ich habe eine Frage zu folgendem Design: 2x2 Within Subject design
- Faktor 1: Valenz (pos. und neg)
- Faktor 2: Normativität (konform und nonkonform)

Zudem habe ich 6 Stereotype, auf denen die Faktoren jeweils variieren können und von denen ein Stereotyp jeder VP nur einmal gezeigt werden soll. Die Stereotype interessieren mich aber bei der Auswertung nicht.
Meinen Überlegungen nach gibt es also 24 mögliche Kombinationen.
Stereotyp1_pos_nonkoform
Stereotyp1_pos_konform
Stereotyp1_neg_nonkonform
Stereotyp1_neg_konform
...
Stereotyp6_pos_nonkoform
Stereotyp6_pos_konform
Stereotyp6_neg_nonkonform
Stereotyp6_neg_konform

Die Kombinationen möchte ich den VPs als Vignetten darbieten. Dabei soll jede VP zu jedem Stereotyp nur eine Aussage erhalten und die VP jede Bedingung genau einmal durchlaufen:
Ein konkretes Beispiel sähe also so aus:
- Vignette 1: Stereotyp1_pos_nonkoform
- Vignette 2: Stereotyp4_pos_konform
- Vignette 3: Stereotyp6_neg_nonkonform
- Vignette 4: Stereotyp3_neg_konform
Dies ist u.a. dem Umstand geschuldet, dass ich einer VP nicht ein positives und negatives Stereotyp über die Personengruppe zeigen kann.

Nach jeder Vignette sollen die VPs vier Fragen beantworten, die immer alle gleich sind.

Ich habe schon viel recherchiert, leider ist mir dennoch nicht klar, wie ich diese mehrstufige Randomisierung umsetze.
Ich könnte für die Stereotype einen Zufallsgenerator erstellen und dann 4 aus den 6 Stereotypen ziehen lassen. Allerdings ist mir bei diesem Szenario nicht klar, wie ich den Stereotypen in einem zweiten Schritt die Ausprägungen der Faktoren zuordne und sicherstelle, dass jede Bedingung genau einmal vorkommt.

Ich hoffe, mein Anliegen ist verständlich formuliert.

Schon einmal vielen Dank!

1 Answer

0 votes
by SoSci Survey (327k points)

Kein Problem ... erstellen Sie einfach zwei Zufallsgeneratoren. Einen für die Stereotype (mit 7 Zetteln, von denen immer 4 gezoen werden) und einen für die Rotation der 2x2=4 Kombinationen (von denen immer alle 4 gezogen werden).

Sie haben dann 2 Zahlenreihen á 4 Codes. Und aus dem ersten Code-Paar lässt sich die erste Vignette ableiten, aus dem zweiten die zweite Vignette u.s.w.

Jetzt müssen Sie sich nur noch überlegen, wie Sie die Daten am Ende im Datensatz benötigen. Nebeneinander oder vielleicht lieber untereinander mittels Multi-Level-Struktur?

by s162868 (110 points)
Vielen Dank!
Ich habe nun anhand Ihrer Hilfestellung folgenden Code erstellt:

$codeStereotyp = value(id('ZG01', 1));  // Auslesen des Stereotyps
$codeBedingung = value(id('ZG02', 1)); // Auslesen der Bedingung




// Filter: Vignetten den einzelnen Bedingungen zuordnen
if ($codeStereotyp == 1 and $codeBedingung == 1) {
  text('VI01');
} elseif ($codeStereotyp == 1 and $codeBedingung == 2) {
  text('VI07');
} elseif ($codeStereotyp == 1 and $codeBedingung == 3) {
  text('VI04');
} elseif ($codeStereotyp == 1 and $codeBedingung == 4) {
  text('VI10');

} elseif ($codeStereotyp == 2 and $codeBedingung == 1) {
  text('VI11');
} elseif ($codeStereotyp == 2 and $codeBedingung == 2) {
  text('VI12');
} elseif ($codeStereotyp == 2 and $codeBedingung == 3) {
  text('VI13');
} elseif ($codeStereotyp == 2 and $codeBedingung == 4) {
  text('VI14');

} elseif ($codeStereotyp == 3 and $codeBedingung == 1) {
  text('VI15');
} elseif ($codeStereotyp == 3 and $codeBedingung == 2) {
  text('VI16');
} elseif ($codeStereotyp == 3 and $codeBedingung == 3) {
  text('VI17');
} elseif ($codeStereotyp == 3 and $codeBedingung == 4) {
  text('VI18');

} elseif ($codeStereotyp == 4 and $codeBedingung == 1) {
  text('VI19');
} elseif ($codeStereotyp == 4 and $codeBedingung == 2) {
  text('VI20');
} elseif ($codeStereotyp == 4 and $codeBedingung == 3) {
  text('VI21');
} elseif ($codeStereotyp == 4 and $codeBedingung == 4) {
  text('VI22');

} elseif ($codeStereotyp == 5 and $codeBedingung == 1) {
  text('VI23');
} elseif ($codeStereotyp == 5 and $codeBedingung == 2) {
  text('VI24');
} elseif ($codeStereotyp == 5 and $codeBedingung == 3) {
  text('VI25');
} elseif ($codeStereotyp == 5 and $codeBedingung == 4) {
  text('VI26');

} elseif ($codeStereotyp == 6 and $codeBedingung == 1) {
  text('VI27');
} elseif ($codeStereotyp == 6 and $codeBedingung == 2) {
  text('VI28');
} elseif ($codeStereotyp == 6 and $codeBedingung == 3) {
  text('VI29');
} elseif ($codeStereotyp == 6 and $codeBedingung == 4) {
  text('VI30');
}

Jetzt frage ich mich nur, wie ich auf vier aufeinander folgenden Seiten den VPs jeweils eine Vignette präsentieren kann.
Wenn ich den Code einfach auf 4 Seiten kopiere, wird auf jeder Seite die gleiche Vignette angezeigt (scheinbar wird keine neue Bedingung aus dem Zufallsgenerator gezogen).

Deswegen habe ich versucht mit loopPage zu arbeiten:
$sets = valueList('ZG02'); // Liest alle gezogenen Zettel aus
$i = loopPage(count($sets));

$codeStereotyp = value(id('ZG01', $i + 1));  // Auslesen des Stereotyps
$codeBedingung = value(id('ZG02', $i + 1)); // Auslesen der Bedingung
...

Allerdings verwende ich Platzhalter für Namen in den Vignetten. In jeder Vignette soll ein anderer Name verwendet werden und dies geschieht nun aber nicht mehr. Der Inhalt der Vignetten variiert zwar, aber es werden für unterschiedliche Vignetten immer die gleichen Namen verwendet.
Woran kann das liegen?

Zudem bin ich mir nicht sicher, wie ich die Abfrage meiner AV einbinden soll. Ich habe einige Foreneinträge durchstöbert und gelesen, man muss die Fragen wohl mehrfach reinkopieren, damit die Antworten nicht überschrieben werden. Ist das richtig? Wie konkret würde ich das umsetzen?
by SoSci Survey (327k points)
> Allerdings verwende ich Platzhalter für Namen in den Vignetten. In jeder Vignette soll ein anderer Name verwendet werden und dies geschieht nun aber nicht mehr.

Nun, Sie können den Platzhalter ja auch dyamisch anpassen, z.B.

$names = ['Fritz', 'Frida', 'Frank', 'Franziska'];
replace('%name%', $names[$i]);
by SoSci Survey (327k points)
> Zudem bin ich mir nicht sicher, wie ich die Abfrage meiner AV einbinden soll.

Dafür müssen Sie sich erst einmal überlegen, wie Sie die Daten strukturieren möchten. Wenn Sie die 4 AV-Datenblöcke einfach nebeneinander haben möchten, legen Sie 4 Kopien an und zeigen in Abhängigkeit von $i immer eine andere.
by s162868 (110 points)
Ich habe meinen Code angepasst:

// Namen in einem Array speichern
$namenuniversell = array(
    1 => 'Leo',
    2 => 'Ben',
    3 => 'Tom',
    4 => 'Oliver',
    5 => 'David',
    6 => 'Daniel',
    7 => 'Emma',
    8 => 'Sophia',
    9 => 'Ella',
    10 => 'Olivia',
    11 => 'Clara',
    12 => 'Charlotte',
);

// Ein Name wird zufällig gezogen
// Urne mit 12 Codes habe ich angelegt
urnDraw('urnenameuniversell', 'IV01');
$code = value('IV01_01');
// Mit Code(1-12) wird ein Name zufällig gezogen
$nameuniversell[$i] = $namenuniversell[$code];
// ein Name wird nun im Platzhalter %name% abgelegt
replace('%name%', $nameuniversell[$i]);

Leider klappt es immer noch nicht.
by SoSci Survey (327k points)
Müssen Sie die Namen denn randomisieren? Mein Vorschlag war, dass sie wenigsten diesen konstant halten - sonst haben Sie ja noch mehr statistisches Rauschen...

> Leider klappt es immer noch nicht.

Was genau klappt denn nicht?
by s162868 (110 points)
edited by s162868
> Was genau klappt denn nicht?
Dass bei jeder Vignette ein anderer Name angezeigt wird.

Dies muss deswegen der Fall sein, da pro VP vier verschiedene Vignetten mit unterschiedlichen Beschreibungen von Personen gezeigt werden. Zum Beispiel könnte Ben nicht gleichzeitig Amerikaner und Franzose sein.
by SoSci Survey (327k points)
Und Sie verwenden den Platzhalter %name5 in den Vignetten? Was wurde denn mit obigem Code angezeigt - und was passiert, wenn Sie nach Definition von $namenuniversell nur diesen Code verwenden:

replace('%name%', $namenuniversell[$i]);

Im selben Block, wo auch das $i=loopPage() steht, versteht sich. Und oberhalb des HTML-Codes für die Vignette.
by s162868 (110 points)
> Und Sie verwenden den Platzhalter %name5 in den Vignetten?
Ja genau. Eine Vignette sieht z.B. so aus: %name% ist Amerikaner*in.  Die meisten Menschen glauben, dass Amerikaner*innen ehrgeizig und fleißig sind. Und auch %name% ist sehr ehrgeizig und fleißig.

Mein ganzer Code sieht folgendermaßen aus:

$sets = valueList('ZG02'); // Liest alle gezogenen Zettel aus
$i = loopPage(count($sets));


// PLATZHALTER

//NAMEN

// Namen in einem Array speichern
$namenuniversell = array(
    1 => 'Leo',
    2 => 'Ben',
    3 => 'Tom',
    4 => 'Oliver',
    5 => 'David',
    6 => 'Daniel',
    7 => 'Emma',
    8 => 'Sophia',
    9 => 'Ella',
    10 => 'Sarah',
    11 => 'Clara',
    12 => 'Charlotte',
);
// Ein Name wird zufällig gezogen
// Urne mit 12 Codes habe ich angelegt
urnDraw('urnenameuniversell', 'IV01');
$code = value('IV01_01');
// Mit Code(1-12) wird ein Name zufällig gezogen
$nameuniversell[$i] = $namenuniversell[$code];
// ein Name wird nun im Platzhalter %name% abgelegt
replace('%name%', $nameuniversell[$i]);


// ausschließlich männliche Namen für Homosexuell
// Namen in einem Array speichern
$namenmann = array(
    1 => 'Leo',
    2 => 'Ben',
    3 => 'Tom',
    4 => 'Oliver',
    5 => 'David',
    6 => 'Daniel',
);

// Ein Name wird zufällig gezogen
// Urne mit 6 Codes habe ich angelegt
urnDraw('urnename', 'IV04');
$code = value('IV04_01');
// Mit Code(1-6) wird ein Name zufällig gezogen
$namemann = $namenmann[$code];
// ein Name wird nun im Platzhalter %name% abgelegt
replace('%namemann%', $namemann);



//VERHALTEN

// Verhalten universell
// Verhalten in einem Array speichern
$verhaltenauswahl = array(
    1 => '%name% fuhr zusammen mit einer alten Dame im Bus und folgte ihr, als diese ausstieg. Als sich eine gute Gelegenheit bat, schubste %name% die alte Dame um und stahl ihre Handtasche.',
    2 => '%name% brach in ein Haus ein und stahl die Wertgegenstände. Anschließend verkaufte %name% diese bei Ebay.',
    3 => '%name% sah eine Jacke in einem Geschäft hängen, ging in den Laden hinein, versteckte die Jacke in der eigenen Tasche und verließ den Laden ohne zu bezahlen.',
    4 => '%name% brach die Tür eines Autos auf, schloß das Auto kurz und stahl dieses anschließend.',
    5 => 'Als %name% die jährliche Steuer erledigte, gab %name% fälschlicherweise geringere Einkünfte an. So hinterzog %name% einige tausend Euro Steuern. ',
    6 => '%name% fuhr beim Einparken gegen ein anderes Auto und richtete an diesem einen Schaden. Jedoch fuhr %name% schnell wieder aus der Parklücke heraus und meldete den Unfall nicht.',
    7 => '%name% arbeitet in einer Firma und ist dort für die Finanzen zuständig. Über die letzten Jahre hinweg hat %name% die Buchführung gefälscht und so mehrere Millionen Euro unterschlagen. Die Firma steht deswegen nun kurz vor dem Bankrott und muss Mitarbeiter entlassen.',
    8 => '%name% wollte sich auf eine ausgeschriebene Stelle bewerben. Allerdings wusste %name%, dass die Noten auf dem Abschlusszeugnis schlechter sind als die der Mitbewerber. %name% entschied sich deswegen dazu das eigene Abschlusszeugnis zu fälschen. Letztendlich erhielt %name% gegenüber den besser qualifizierten Mitbewerbern die Zusage für den Job.',
);

// Ein Verhalten wird zufällig gezogen
// Urne mit 8 Codes habe ich angelegt
urnDraw('urneverhaltenuniversell', 'IV02');
$code = value('IV02_01');
// Mit Code(1-8) wird ein Verhalten zufällig gezogen
$verhalten = $verhaltenauswahl[$code];
// ein Name wird nun im Platzhalter %name% abgelegt
replace('%verhalten%', $verhalten);


// Verhalten Homosexuell
// hier dürfen auch ausschließlich nur männliche Namen stehen
$verhaltenauswahlmann = [
    '%namemann% fuhr zusammen mit einer alten Dame im Bus und folgte ihr, als diese ausstieg. Als sich eine gute Gelegenheit bat, schubste %name% die alte Dame um und stahl ihre Handtasche.',
    '%namemann% brach in ein Haus ein und stahl die Wertgegenstände. Anschließend verkaufte %namemann% diese bei Ebay.',
    '%namemann% sah eine Jacke in einem Geschäft hängen, ging in den Laden hinein, versteckte die Jacke in der eigenen Tasche und verließ den Laden ohne zu bezahlen.',
    '%namemann% brach die Tür eines Autos auf, schloß das Auto kurz und stahl dieses anschließend.',
    'Als %namemann% die jährliche Steuer erledigte, gab %namemann% fälschlicherweise geringere Einkünfte an. So hinterzog %namemann% einige tausend Euro Steuern. ',
    '%namemann% fuhr beim Einparken gegen ein anderes Auto und richtete an diesem einen Schaden. Jedoch fuhr %name% schnell wieder aus der Parklücke heraus und meldete den Unfall nicht.',
    '%namemann% arbeitet in einer Firma und ist dort für die Finanzen zuständig. Über die letzten Jahre hinweg hat %namemann% die Buchführung gefälscht und so mehrere Millionen Euro unterschlagen. Die Firma steht deswegen nun kurz vor dem Bankrott und muss Mitarbeiter entlassen.',
    '%namemann% wollte sich auf eine ausgeschriebene Stelle bewerben. Allerdings wusste %namemann%, dass die Noten auf dem Abschlusszeugnis schlechter sind als die der Mitbewerber. %namemann% entschied sich deswegen dazu das eigene Abschlusszeugnis zu fälschen. Letztendlich erhielt %name% gegenüber den besser qualifizierten Mitbewerbern die Zusage für den Job.',
];
replace('%verhaltenmann%', $verhaltenauswahlmann[$i]);



// RANDOMISIERUNG

$codeStereotyp = value(id('ZG01', $i + 1));  // Auslesen des Stereotyps
$codeBedingung = value(id('ZG02', $i + 1)); // Auslesen der Bedingung


// Filter: Vignetten den einzelnen Bedingungen zuordnen
if ($codeStereotyp == 1 and $codeBedingung == 1) {
  text('VI01');
} elseif ($codeStereotyp == 1 and $codeBedingung == 2) {
  text('VI07');
} elseif ($codeStereotyp == 1 and $codeBedingung == 3) {
  text('VI04');
} elseif ($codeStereotyp == 1 and $codeBedingung == 4) {
  text('VI10');

} elseif ($codeStereotyp == 2 and $codeBedingung == 1) {
  text('VI11');
} elseif ($codeStereotyp == 2 and $codeBedingung == 2) {
  text('VI12');
} elseif ($codeStereotyp == 2 and $codeBedingung == 3) {
  text('VI13');
} elseif ($codeStereotyp == 2 and $codeBedingung == 4) {
  text('VI14');

} elseif ($codeStereotyp == 3 and $codeBedingung == 1) {
  text('VI15');
} elseif ($codeStereotyp == 3 and $codeBedingung == 2) {
  text('VI16');
} elseif ($codeStereotyp == 3 and $codeBedingung == 3) {
  text('VI17');
} elseif ($codeStereotyp == 3 and $codeBedingung == 4) {
  text('VI18');

} elseif ($codeStereotyp == 4 and $codeBedingung == 1) {
  text('VI19');
} elseif ($codeStereotyp == 4 and $codeBedingung == 2) {
  text('VI20');
} elseif ($codeStereotyp == 4 and $codeBedingung == 3) {
  text('VI21');
} elseif ($codeStereotyp == 4 and $codeBedingung == 4) {
  text('VI22');

} elseif ($codeStereotyp == 5 and $codeBedingung == 1) {
  text('VI23');
} elseif ($codeStereotyp == 5 and $codeBedingung == 2) {
  text('VI24');
} elseif ($codeStereotyp == 5 and $codeBedingung == 3) {
  text('VI25');
} elseif ($codeStereotyp == 5 and $codeBedingung == 4) {
  text('VI26');

} elseif ($codeStereotyp == 6 and $codeBedingung == 1) {
  text('VI27');
} elseif ($codeStereotyp == 6 and $codeBedingung == 2) {
  text('VI28');
} elseif ($codeStereotyp == 6 and $codeBedingung == 3) {
  text('VI29');
} elseif ($codeStereotyp == 6 and $codeBedingung == 4) {
  text('VI30');
}


> Was wurde denn mit obigem Code angezeigt?
Wenn ich den Fragebogen abspiele wird der gleiche Namen für mehrere Vignetten verwendet. Also z.B.
1. Emma ist hochbegabt. Die meisten Menschen glauben, dass hochbegabte Personen emotionale und soziale Defizite besitzen. Emma ist jedoch äußerst gut im sozialen Umgang mit anderen, sehr empathisch und kann die eigenen Gefühle sehr gut ausdrücken.
2. Emma ist eine reiche Person. Die meisten Menschen glauben, dass reiche Personen unfreundlich und unbarmherzig sind. Auch Emma besitzt diese Eigenschaften und verhält sich anderen gegenüber unfreundlich und unbarmherzig.

Mein Ziel ist es, dass in der zweiten Vignette nicht mehr Emma als Name verwendet wird. Aber Emma prinzipiell sowohl reich als auch hochbegabt sein könnte (deswegen meine Idee der randomisierten Zuordnung).

Das gleiche Problem habe ich auch mit der Randomisierung der Verhaltensweisen. Ich vermute da liegt die gleiche Ursache vor.


> und was passiert, wenn Sie nach Definition von $namenuniversell nur diesen Code verwenden:
replace('%name%', $namenuniversell[$i]);

Dann kommt folgende Fehlermeldungen:
- Für die Funktion replace() wurden nicht ausreichend Argumente angegeben, 2 Argumente sind zwingend erforderlich. Weitere Details finden Sie in der Anleitung zur Funktion.
- Für den Platzhalter %name% wurde weder ein Eingabefeld mit prepare_input() vorbereitet, noch ein Inhalt mit replace() festgelegt.
by SoSci Survey (327k points)
Lassen Sie bitte mal alles nach loopPage() und vor // VERHALTEN weg und setzen Sie nur das Array mit den Namen und den Code aus meinem letzten Posting ein.

Was Sie da mit Urnen basteln scheint mir nicht ganz stimmig. Und wie oben schon argumentiert auch statistisch kontraproduktiv. Also

$sets = valueList('ZG02'); // Liest alle gezogenen Zettel aus
$i = loopPage(count($sets));

//NAMEN
$namenuniversell = array(
    0 => 'Leo',
    1 => 'Ben',
    2 => 'Tom',
    3 => 'Oliver',
    4 => 'David',
    5 => 'Daniel',
    6 => 'Emma',
    7 => 'Sophia',
    8 => 'Ella',
    9 => 'Sarah',
    10 => 'Clara',
    11 => 'Charlotte',
);
replace('%name%', $namenuniversell[$i]);

//VERHALTEN
// u.s.w.

Beachten Sie, dass ich das Array ab 0 nummeriere, nicht ab 1. Denn Array-Indizes und auch loopPage() zählen in der Programmierung in den meisten Sprachen (inkl. PHP) ab 0.
by s162868 (110 points)
Ich habe es zwischenzeitlich geschafft, dass mein Experiment nun reibungslos läuft und ich möchte mich noch ganz herzlich für Ihre Hilfe bedanken!

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

...