0 votes
in SoSci Survey (dt.) by s065450 (160 points)
edited by SoSci Survey

In Ergänzung zum oben Vorgehen (nutzen der Statistik um die geringste Anzahl an Antworten zu ermitteln), würde ich gern wissen, wie es gehen kann, dass:
- auch die Statistik genutzt wird (auch zählen der Antworten)
- aber wenn eine bestimmte Anzahl an Antworten noch NICHT erfüllt ist aus sechs Optionen zufällig eine ausgewählt wird.

Hier mein Versuch:

// Definition für alle die bei Frage A017 item 7 ausgewählt haben
{
if(value('A017') == 7); 
{
// Nutzen der Statistik (hier nicht aufgeführt) um den Fall zu definieren, dass wenn für eine der 6 Fälle die Quote 4 und mehr erreicht ist, dann soll auf die nächste Seite gesprungen werden (da wird dann die andere Variante durchgespielt mit dem Sortieren nach der geringsten Häufigkeit)
if (($SNBUKa11 > 3) 
or ($LNBUKa11 > 3) 
or ($SCRUKa11 > 3)
or ($LCRUKa11 > 3)
or ($SPRUKa11 > 3)
or ($LPRUKa11 > 3)) 
{ 
    goToPage('007');
// wenn noch keine 4 Antworten da sind, dann soll eine Zufallsziehung aus einer der 6 Optionen durchgeführt werden
} else {
$bucketsUK = array(
   1 => $SNBUKa11,
   2 => $LNBUKa11,
   3 => $SCRUKa11,
   4 => $LCRUKa11,
   5 => $SPRUKa11,
   6 => $LPRUKa11,);
   shuffle($bucketsUK);
   $bucketsUK = $bucketsUK[0];
   put('B046_01', $bucketsUK);
   registerVariable('B046_01');
} 
// hier will ich eigentlich erreichen, dass er das erste Element zieht, aber ich glaube hier ist was falsch, denn im debug modus zeigt er folgendes an: Debug information for 'B046_01': 'B046_01' = B046_01 (string) value('B046_01') = 0  
// Und mit value = 0 kann er nicht weiter arbeiten;

// Das ganze soll für verschiedene Varianten funktionieren. Ich hab den Anschlussteil versucht mit ELSE zu verknüpfen, aber da kriege ich eine Fehlermeldung; Ich will ja dass er nur für den Fall A017 = 7 ODER A017 = 8 ODER etc. dann die jeweiligen Berechnungen und Schritte durchgeführt werden;

// Definition für alle die bei Frage A017 item 8 ausgewählt haben etc etc..
} 
if (value('A017') == 8); 
{
if (($SNBUKa12 > 3) 
or ($LNBUKa12 > 3) 
or ($SCRUKa12 > 3)
or ($LCRUKa12 > 3)
or ($SPRUKa12 > 3)
or ($LPRUKa12 > 3)) { 
    goToPage('007');
} else {
$bucketsUK = array(
   1 => $SNBUKa12,
   2 => $LNBUKa12,
   3 => $SCRUKa12,
   4 => $LCRUKa12,
   5 => $SPRUKa12,
   6 => $LPRUKa12,);
   shuffle($bucketsUK);
   $bucketsUK = $bucketsUK[0];
   put('B046_01', $bucketsUK);
   registerVariable('B046_01');
}

1 Answer

0 votes
by SoSci Survey (325k points)

In Ihrem Code ist leider nicht enthalten, wie die Variablen $SNBUKa11 u.s.w. definiert werden, deshalb kann ich den Code nur bruchstückhaft nachvollziehen. Ich würde aber generell empfehlen, diese Variablen (bzw. ein Array mit diesen Inhalten) gleich zu nutzen, anstatt mittels goToPage() auf eine andere Seite zu springen.

Insgesamt würde ich folgendes empfehlen:

  1. Wie im vorigen Post skizziert: Ein Array mit den Häufigkeiten definieren
  2. Daraus ein neues Array erstellen, welches nur die Elemente beinhaltet, die weniger als X Datensätze haben (wenn nichts übrig bleibt, sind Sie fertig).
  3. Mittels array_intersect() die Schnittmenge aus diesem Array und dem Array bilden, welches dies möglichen Optionen (vorher vom Teilnehmer ausgewählt) umfasst.
  4. Falls nichts übrig bleibt, dann müssen Sie noch entscheiden, was passieren soll (z.B. eines der ausgewählten verwenden, auch wenn schon genug Datensätze dafür vorliegen)
  5. Dieses Array mischen und das erste Element verwenden.

Dies scheint mir deutlich strukturierter als die Fallunterscheidung in Ihrem Code. Denn der Fall, dass aus allen Optionen gewählt werden kann, ist ja nur ein Spezialfall.

Ich möchte auch darauf hinweisen, dass die "zufällige" Zuordnung hier nicht ganz sauber ist. Wer eine selten genutzte Option verwendet, bekommt mit deutlich höherer Wahrscheinlichkeit diese zugewiesen als eine andere. Das ist für Ihre Gleichverteilung erforderlich, wird aber dazu führen, dass Sie bei allen Inferenzschlüssen in der Analyse gut aufpassen müssen, auf welche Grundgesamtheit Sie sich beziehen.

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

...