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

Hallo zusammen,

ich stehe kurz vor der Veröffentlichung meiner Umfrage und habe einen Zweifel bzgl. der Ziehung aus der Urne...

Meine VPN werden einmal einer Bedingung (experte vs. Nicht-Experte) zugeordnet, das klappt super.

Zufallsgenerator 1 (S101):

1 = Experte
2 = Nicht-Experte

--> beide wurden 26x gezogen, das passt also.

Dann sollen sie insgesamt 18 Fragen beantworten, welche in Fragenpaaren angelegt sind und immer nur eine Variante je Fragenpaar erscheinen darf (entweder hoher Anker oder niedriger Anker). Das klappt, jedoch sind die Häufigkeiten der Ziehung sehr unregelmäßig:
In meiner Auswertung zeigt sich, dass ein Item gar nicht gezogen wurde, während andere schon sechs oder sieben Mal gezogen wurden!

Anzeigehäufigkeit / Anzahl Fälle / Item-Kennung
gar nicht 1 NN05
einmal 3 NH03
zweimal 9 EH15, EH18, EN02, EN07
dreimal 18
viermal 20
fünfmal 12
sechsmal 8
siebenmal 1 NH05
achtmal 0

Kann ich das über die Urnen-Einstellung besser kontrollieren oder "mittelt" sich das bei einer entsprechenden Anzahl an Teilnehmern aus?

Aktuell habe ich die Ziehung eingestellt als "Ungeingeschränkte Zufallsauswahl (Ziehen mit Zurücklegen nach der Ziehung), aber es gibt ja noch zwei weitere Varianten (gleichverteilte Ziehung ohne Zurücklegen und Gleichverteilung in abgeschlossenen Fragebögen (Ziehen ohne Zurücklegen).

Zufallsgenerator 2 (S102):

01 = Frage HA (jeweils)
02 = 
03 = 
04 = 
05 = 
06 = 
07 = 
08 = 
09 = 
10 = 
11 = 
12 = 
13 = 
14 = 
15 = 
16 = 
17 = 
18 = 

Bisher gezogen:

01: 28
02: 17
03: 26
04: 20
05: 22
06: 22
07: 23
08: 26
09: 27
10: 28
11: 19
12: 25
13: 27
14: 29
15: 24
16: 21
17: 24
18: 24

Hier der restliche Code:

// Gruppen-Definition und entsprechende "Fragen-Kataloge"
$fragen_hoch = array();
$fragen_hoch[1] = array('EH01', 'EH02', 'EH03', 'EH04', 'EH05', 'EH06', 'EH07', 'EH08', 'EH09', 'EH10', 'EH11', 'EH12', 'EH13', 'EH14', 'EH15', 'EH16', 'EH17', 'EH18');
$fragen_hoch[2] = array('NH01', 'NH02', 'NH03', 'NH04', 'NH05', 'NH06', 'NH07', 'NH08', 'NH09', 'NH10', 'NH11', 'NH12', 'NH13', 'NH14', 'NH15', 'NH16', 'NH17', 'NH18');

$fragen_niedrig = array();
$fragen_niedrig[1] = array('EN01', 'EN02', 'EN03', 'EN04', 'EN05', 'EN06', 'EN07', 'EN08', 'EN09', 'EN10', 'EN11', 'EN12', 'EN13', 'EN14', 'EN15', 'EN16', 'EN17', 'EN18');
$fragen_niedrig[2] = array('NN01', 'NN02', 'NN03', 'NN04', 'NN05', 'NN06', 'NN07', 'NN08', 'NN09', 'NN10', 'NN11', 'NN12', 'NN13', 'NN14', 'NN15', 'NN16', 'NN17', 'NN18');

// Randomisierte Zuordnung zu Gruppen: Experte oder Nicht-Experte
// über Frage S101 >>> 1 = Experte, 2 = Nicht-Experte

// Standardmäßig werden "hoher Anker" Fragen gestellt.
// Durch Zufallsgenerator S102 werden zufällig 9 Fragen im Katalog mit entsprechenden "niedriger Anker" Fragen ausgetauscht

// Auswahl des entsprechenden "hoher Anker" Kataloges (falls noch nicht geschehen)
if (!isset($katalog)) {
    // Auswahl:
    $katalog = $fragen_hoch[value('S101')];
    
    // Hier werden jetzt zufällig 9 Fragen durch entsprechende "niedriger Anker" Fragen ersetzt
    for ($i = 1; $i <= 9; $i++) {
        $varID = 'S102x'.sprintf('%02d', $i);  // Die Variablennamen lauten S102x01 bis S102x09
        $wert = value($varID);
        $katalog[$wert-1] = $fragen_niedrig[value('S101')][$wert-1];
    }

    // Durchmischen:
    shuffle($katalog);
    // Speichern um ihn auf mehreren Seiten zu nutzen:
    registerVariable($katalog);
}

// Erste Frage anzeigen:
question($katalog[0]);

Ich bin sehr dankbar für Rückmeldungen und Hinweise!

Vielen Dank und schönen Abend

1 Answer

0 votes
by SoSci Survey (302k points)

Nun, das ist das Kreuz mit dem Zufall - er ist nicht verlässlich. Deshalb rate ich von der Kombination separater Zufallsgeneratoren auch immer wieder ab.

Meines Erachtens brauchen Sie für Experten und nicht-Experten mindestens zwei separate Follow-up-Zufallsgeneratoren. Also quasi noch eine Kopie von S102.

Sie ziehen aus S102 pro Interview "nur" 9 Zettel, oder? Wenn Sie nämlich 18 ziehen würden, hätten Sie noch eine Quelle für Probleme.

by s132943 (120 points)
Hallo,

vielen Dank für die Rückmeldung - genau ich ziehe im S102 9 Zettel.

Sie sagen, dass ich mindestens zwei separate Follow-Up-Zufallsgeneratoren brauche , dazu folgende Fragen:
- Was heißt follow-up konkret?
- was meinen Sie mit mindestens zwei? Wie genau bestimme ich die Anzahl?
- lege ich analog zum S102 einfach noch weitere an, dann mit Frage NA, statt HA wie jetzt?

Hat die Art der Ziehung noch eine positive/negative Auswirkung, sodass sich eine bestimmte Variante für mich als hilfreich erweist?

Akuell habe ich die Ziehung eingestellt als "Ungeingeschränkte Zufallsauswahl (Ziehen mit Zurücklegen nach der Ziehung), aber es gibt ja noch zwei weitere Varianten (gleichverteilte Ziehung ohne Zurücklegen und Gleichverteilung in abgeschlossenen Fragebögen (Ziehen ohne Zurücklegen).

Vielen herzlichen Dank und Grüße!
by SoSci Survey (302k points)
> Was heißt follow-up konkret?

Das was Sie bisher in S102 haben.

> was meinen Sie mit mindestens zwei? Wie genau bestimme ich die Anzahl?

Eine pro Experimentalgruppe. Also: Genau zwei :)

> lege ich analog zum S102 einfach noch weitere an, dann mit Frage NA, statt HA wie jetzt?

Ja.

> Hat die Art der Ziehung noch eine positive/negative Auswirkung, sodass sich eine bestimmte Variante für mich als hilfreich erweist?

Die Gleichverteilung bei der Ziehung (Standard-Einstellung) sollte schon passen, wenn Sie nicht bei einigen Bedingungen systematisch mehr Abbrecher haben.

> Ungeingeschränkte Zufallsauswahl

Das ist nicht so günstig, denn dabei haben Sie alle Ungleichverteilungen, die der Zufalls nunmal so mit sich bringt.
by s132943 (120 points)
Hallo,

danke für die Begriffsklärung - ich habe es nun mit einem Follow-Up-Zufallsgenerator für NA probiert.

Das Ergebnis sieht schon besser aus, jedoch jetzt es ist symmetrisch "unausgewogen verteilt":

0x    0
1x    0
2x    3
3x    5
4x    11
5x    17
6x    17
7x    11
8x    5
9x    3
10x    0

Kann man das noch weiter verbessern oder sind die Mittel mit PHP ausgeschöpft?

Ansonsten besteht ja noch eine andere Möglichkeit, da hab ich aber noch keine Idee bzgl. der Programmierung:

Eine einzige Zufallsreihenfolge der Items vorab bestimmen und dann pro VPN die Items um 1 verschieben, d.h. Vp1 bekommt Items 1-9 in Bed1 und 10-18 in Bed2 (zufällig gemischt); bei Vp2 sind es dann Items 2-10 in Bed1 und 11-18+1 in Bed2; etc.
So würden alle Items gleich häufig in beiden Anker-Bedingungen auftauchen  (bei 18, 36, 54 etc. VPN).


Das wäre eine Alternative - haben Sie vielleicht einen Hinweis bzgl des Codes?

Vielen Dank und schönen Abend
by SoSci Survey (302k points)
> ich habe es nun mit einem Follow-Up-Zufallsgenerator für NA probiert.

Sie haben jetzt als zwei Zufallsgeneratoren statt dem einen und Sie ziehen auch jeweils nur aus eine, korrekt? Posten Sie doch mal Ihren PHP-Code, dann kann ich einen Blick darauf werfen.

> jedoch jetzt es ist symmetrisch "unausgewogen verteilt":

Was ist denn an Ziehungen im Zufallsgenerator vermerkt? Die Zahlen oben sie nur die Fälle, die nach der Änderung erhoben wurden?
by s132943 (120 points)
Hallo,

ich habe es nun anders gelöst, aber so ganz klappt das auch noch nicht. :D

Die Idee ist folgende:

Es gibt eine festgelegte Liste mit den Items 1-9 aus Bedingung A und den Items 10-18 aus Bedingung B.
VPN 1 bekommt genau diese Items.
VPN 2 bekommt die Liste um einen verschoben, also 2-10 aus Bed. A und 11-18 + 1 aus Bed. B. V
VPN 3 bekommt dann 3-11 aus Bed A und 12-18 +1 +2
...

So habe ich bei 18, 36, 72, ... Teilnehmern exakt gleiche Häufigkeiten.

Innerhalb der 9 + 9 sollen die Items jedoch zufällig durchmischt sein, um Positionseffekte auszuschließen.

Aktuell sieht der Code wie folgt aus, aber das klappt noch nicht ganz. Denn in meinem Test mit 20 Testeingaben wurden 24 Items bereits 5x ausgewählt, während 4 Items erst 3x ausgewählt wurden - das darf natürlich nicht sein. Liegt es ggf. an der Shuffle-Funktion? Ich dachte diese sorgt für eine zufällige Reihenfolge der 9 + 9..

Haben Sie eine Idee? Vielen Dank vorab und beste Grüße, Josephine

Hier der Code:

// Gruppen-Definition und entsprechende "Fragen-Kataloge"
$fragen_hoch = array();
$fragen_hoch[1] = array('EH01', 'EH02', 'EH03', 'EH04', 'EH05', 'EH06', 'EH07', 'EH08', 'EH09', 'EH10', 'EH11', 'EH12', 'EH13', 'EH14', 'EH15', 'EH16', 'EH17', 'EH18');
$fragen_hoch[2] = array('NH01', 'NH02', 'NH03', 'NH04', 'NH05', 'NH06', 'NH07', 'NH08', 'NH09', 'NH10', 'NH11', 'NH12', 'NH13', 'NH14', 'NH15', 'NH16', 'NH17', 'NH18');

$fragen_niedrig = array();
$fragen_niedrig[1] = array('EN01', 'EN02', 'EN03', 'EN04', 'EN05', 'EN06', 'EN07', 'EN08', 'EN09', 'EN10', 'EN11', 'EN12', 'EN13', 'EN14', 'EN15', 'EN16', 'EN17', 'EN18');
$fragen_niedrig[2] = array('NN01', 'NN02', 'NN03', 'NN04', 'NN05', 'NN06', 'NN07', 'NN08', 'NN09', 'NN10', 'NN11', 'NN12', 'NN13', 'NN14', 'NN15', 'NN16', 'NN17', 'NN18');

// Randomisierte Zuordnung zu Gruppen: Experte oder Nicht-Experte
// über Frage S101 >>> 1 = Experte, 2 = Nicht-Experte

// Fortlaufend (pro Datensatz) werden nun 9 Fragen im Katalog mit entsprechenden "niedriger Anker" Fragen ausgetauscht
// Die Zählung erfolgt unabhängig für Experten und Nicht-Experten in der internen Variable S104_01 und S104_02

if (value('S101') == 1){
    urnDraw('experte','S104');
} else {
    urnDraw('nicht-experte','S104');
}
$zaehlerID = 'S104_01';

// Auswahl des entsprechenden "hoher Anker" Kataloges (falls noch nicht geschehen)
if (!isset($katalog)) {
    // Auswahl:
    $katalog = $fragen_hoch[value('S101')];
    
    // Hier werden jetzt 9 Fragen durch entsprechende "niedriger Anker" Fragen ersetzt
    $aktuell = value($zaehlerID);
    for ($i = 1; $i <= 9; $i++) {
        $katalog[$aktuell] = $fragen_niedrig[value('S101')][$aktuell];
        $aktuell = $aktuell + 1;
        if($aktuell >= 18){
            $aktuell = 0;
        }
    }

    // Hier wird der Katalog einmal zum Testen noch "sortiert" ausgegeben...
    foreach($katalog as $item){
        html($item."<br>");
    }

    // Durchmischen:
    shuffle($katalog);
    // Speichern um ihn auf mehreren Seiten zu nutzen:
    registerVariable($katalog);
}

// Erste Frage anzeigen:
question($katalog[0]);
by SoSci Survey (302k points)
Hier wird es langsam unübersichtlich. Wenn Sie zu Ihrem neuen Code Feedback haben möchten, gerne in einer neuen Frage.

Ansonsten empfehle ich weiterhin die saubere Lösung, wie ich sie beschrieben habe. Das ist auch von den Kombinationen der Stimuli m.E. sauberer.

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

...