0 votes
in SoSci Survey (dt.) by s275430 (130 points)

Ich möchte durch die Zusammenarbeit mit einem Panel-Anbieter eine über verschiedene politische Orientierungen hinweg ausgeglichene Stichprobe erhalten.

Dazu habe ich mich mit Quotierungen beschäftigt, jedoch kein übertragbares Beispiel in der Anleitung gefunden, mit dem ich weiterkomme:

Politische Orientierung erfrage ich mit einem Polaritätenprofil.
Die entstehenden Variablen sind, wenn ich es richtig verstehe, dann diese:

PO_01 [01] links/rechts

PO_01 = links [0]
PO_02 = [1]
PO_03 = [2]
PO_04 = [3]
PO_05 = [4]
PO_06 = [5] - Mitte
PO_07 = [6]
PO_08= [7]
PO_09 = [8]
PO_10 = [9]
PO_11= rechts [10]
-9 = nicht beantwortet

Zwischenfrage: Diese Variablenbezeichnungen habe ich ergänzt, ist das so richtig? In SoSci steht jeweils in der Liste nur "1 = links [0]; 2 = [1]; 3 = [2]" usw. Oder habe ich am Ende nur eine Variable (PO_01) und muss die Ausprägungen woanders als im Variablennamen auslesen?

Für die Quotierung würde ich die Abstufungen jedenfalls gerne in 5 Kategorien mit je 6 Personen zusammenfassen:
PO_01 – PO_02 --> links: 6 Personen
PO_03 – PO_04 --> eher links: 6 Personen
PO_05 - PO_07 --> Mitte: 6 Personen
PO_08 – PO_09 --> eher rechts: 6 Personen
PO_10 – PO_11 --> rechts: 6 Personen

In der Online-Anleitung gibt es ja ein Beispiel mit Umkodierung des Alters durch IF-Konstruktionen. Das scheint mir hier aber nicht übertragbar, da ich nicht eine, sondern 11 verschiedene Variablen für die politische Orientierung habe, oder?

Ich weiß gerade nicht so richtig weiter, wie ich das in meinen PHP-Code zur Quotierung darstellen kann und würde mich sehr über einen Tipp freuen!
Danke im Vorraus,
Marie

by s275430 (130 points)

Bisher habe ich diese drei PHP-Codes dazu erstellt:

1. Definition der Quoten
$quotaPol = [ 1 => 6, // 6 Personen in Pol.Orientierung Gruppe 1 (PO_01 = 0 oder 1) 2 => 6, // 6 Personen in Pol.Orientierung Gruppe 2 (PO_01 = 2 oder 3) 3 => 6, // 6 Personen in Pol.Orientierung Gruppe 3 (PO_01 = 4, 5 oder 6) 4 => 6, // 6 Personen in Pol.Orientierung Gruppe 4 (PO_01 = 7 oder 8) 5 => 6, // 6 Personen in Pol.Orientierung Gruppe 5 (PO_01 = 9 oder 10) ];

2. Merkmale auslesen und umkodieren
// Die Abstufungen der pol. Orientierung werden zu Kategorien zusammengefasst

$pol = value('PO_01');
if ($pol <= 1) {
$polGroup = 1;
} elseif ($pol <= 3) {
$polGroup = 2;
} elseif ($pol <= 6) {
$polGroup = 3;
} elseif ($pol <= 8) {
$polGroup = 4;
} elseif ($pol <= 10) {
$polGroup = 5;
} else {
$polGroup = 6;
}

3. Zählung der vorliegenden Fälle
// Abruf der vorliegenden Fälle für diese Merkmalsausprägung
$casesPol = statistic('count', 'PO03_01', $polGroup);

// Screenout
if (!array_key_exists($quotaPol)) {
redirect('https://survey.maximiles.com/screenout?p=123906_9e0c5d07&m=%reference%');
}

// Auslesen der Quoten für die angegeben Merkmale
$maxPerPol = $quotaPol[$polGroup];

// Quotenstopp
if (($casesPol >= $maxPerPol)) {
redirect(https://survey.maximiles.com/quotasfull?p=123906_a4ea6ff1&m=%reference%');
}

--> Frage mich v.a., ob ich im letzten Code mit "PO03_01" nicht die übergeordnete interne Variable für pol. Orientierung, sondern nur die erste Ausprägung ("politisch ganz links") abrufe...?
Oder geht das in die richtige Richtung?

1 Answer

0 votes
by SoSci Survey (305k points)

Oder habe ich am Ende nur eine Variable (PO_01) und muss die Ausprägungen woanders als im Variablennamen auslesen?

Also, im Idealfall haben Sie ein Variable, in welcher die Antwort mit den Codes 1 bis 11 kodiert wird. Entsprechend wäre das Beispiel mit der Umkodierung auch direkt übertragbar.

Wenn Sie den Fragebogen einfach mal im Debug-Modus starten und rechts oben die Debug-Information aufklappen, sehen Sie nach dem "Weiter" direkt, welche Variable mit welchem Wert in den Datensatz geschrieben wurde.

Die Variable heißt aber wahrscheinlich PO01, nicht PO_01 - außer, wenn Sie das manuell in der Frage geändert haben.

Frage mich v.a., ob ich im letzten Code mit "PO03_01" nicht die übergeordnete interne Variable für pol. Orientierung, sondern nur die erste Ausprägung ("politisch ganz links") abrufe...?

Damit es mit der umkodierten Variable und der Quotierung klappt, müssen Sie die Umkodierung zweimal vornehmen. Einmal vorne im Fragebogen (auf der Seite nach dem Polprofil) für den Abruf der Statistik.

Und das andere mal hinten im Fragebogen, wo Sie die vollstädigen Fälle zählen, und die politische Ausrichtung in eine interne Variable speichern. Das könnte in Ihrem Fall z.B. PO03_01 sein. Sehen Sie sich dafür in der Anleitung zur Quotierung bitte mal nach dem Befehl put() um.

by s275430 (130 points)
Danke für die Antwort. Leider komme ich immer noch nicht weiter...

Ich habe mich zur Vereinfachung nun sogar entschieden, die Kategorienbildung wegzulassen und bei der Fragen nach der polit. Orientierung von Anfang an im Polaritätenprofil nur 5 Kategorien anzugeben. Dann ist zumindest keine Umkodierung erforderlich und mein vereinfachtet PHP-Code sieht folgendermaßen aus:

$quotaPol = [
1 => 6,  // 6 Personen in Pol.Orientierung-Gruppe links
2 => 6,  // 6 Personen in Pol.Orientierung-Gruppe eher links
3 => 6,   // 6 Personen in Pol.Orientierung-Gruppe Mitte
4 => 6,   // 6 Personen in Pol.Orientierung-Gruppe eher rechts
5 => 6,   // 6 Personen in Pol.Orientierung-Gruppe rechts
];

$pol = value('PO03');

// Abruf der vorliegenden Fälle für diese Merkmalsausprägung
$casesPol    = statistic('count', 'PO03_01', $pol);


// Auslesen der Quoten für die angegeben Merkmale
$maxPerPol    = $quotaPol[$pol];
 
// Quotenstopp
if (($casesPol >= $maxPerPol)) {
  redirect('https://survey.maximiles.com/quotasfull?p=123906_a4ea6ff1&m=%reference%');
}


--> Vor meinem complete redirect am Ende des Fragebogens habe ich zudem eingefügt:
"$pol = value('PO03_02');

put('PO03_02', $polGroup);"

Sowie auf der Seite mit dem Item zur pol. Orientierung der Variable eine interne Variable angelegt.


Ich komme weiterhin immer in allen Fällen direkt zur Quotafull-Seite. Wie kann ich hier den Fehler aufdecken?
by SoSci Survey (305k points)
Kommentieren Sie das redirect() bitte mal aus, ergänzen Sie eine kleine Ausgabe, und posten Sie, was als Debug-Information angezeigt wird:

if (($casesPol >= $maxPerPol)) {
  // redirect('https://survey.maximiles.com/...');
  debug('Redirect');
}
debug($casesPol);
debug($maxPerPol);
debug($pol);
by s275430 (130 points)
...habe das Problem gelöst, es lag - genau wie bei einigen anderen ähnlichen Fragestellern hier im Forum - an der Variablenbezeichnung, die ich nicht eindeutig fand...
Danke für den Support hier! :)

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

...