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

*Für die Kooperation mit einem Panel-Anbieter habe ich in meinem Fragebogen verschiedene Quotierungen eingebaut (Geschlecht, Altersgruppen, Bildungsgruppen, Einkommensgruppen und politische Orientierung).

Den Code habe ich analog an anderer Stelle schonmal erfolgreich für eine Quotierung verwendent, daher frage ich mich, ob ich die Variablen nicht korrekt abrufe...
Ich kopiere Ihnen hier erst den Code ein und darunter noch einmal, wie ich auf die Variablenbezeichnungen komme:*

a) Geschlecht

$quotaGender = [
1 => 2,  
2 => 2,  
3 => 1,   
];

$Gender = value('SO_01');

// Abruf der vorliegenden Fälle für diese Merkmalsausprägung
$casesGender    = statistic('count', 'SC13_01', $Gender);


// Auslesen der Quoten für die angegeben Merkmale
$maxPerGender    = $quotaGender[$Gender];
 
// Quotenstopp
if (($casesGender >= $maxPerGender)) {
  redirect('https://survey.maximiles.com/quotasfull?p=123907_2d138370&m=%reference%');
}

b) Altersgruppen (zusammengefasst)

$quotaAge = [
1 => 1,  
2 => 1,  
3 => 1,  
4 => 1,  
5 => 1,  
];

// Das Alter wird umkodiert
$age = value('SO_03');
if ($age <= 33) {
  $ageGroup = 1;
} elseif ($age <= 49) {
  $ageGroup = 2;
} elseif ($age <= 64) {
  $ageGroup = 3;
} elseif ($age <= 100) {
  $ageGroup = 4;
} else {
  $ageGroup = 5;
}



// Abruf der vorliegenden Fälle für diese Merkmalsausprägung
$casesAge    = statistic('count', 'SC14_02', $ageGroup);


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

c) Bildungsgruppen (zusammengefasst)

$quotaEdu = [
1 => 1,  
2 => 1,   
3 => 1,  
];


// Bildungsabschluss wird umkodiert
$edu = value('SO_04');
if ($edu <= 5) {
  $eduGroup = 1;
} elseif ($edu <=7) {
  $eduGroup = 2;
} else {
  $eduGroup = 3;
}


// Abruf der vorliegenden Fälle für diese Merkmalsausprägung
$casesEdu    = statistic('count', 'SC15_02', $eduGroup);


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

d) Einkommensgruppen (zusammengefasst)

$quotaIncome = [
1 => 1,  
2 => 1,  
3 => 1,  
4 => 1,  
5 => 1,  
];


// Einkommen wird umkodiert
$income = value('SO_06');
if ($income <= 3) {
  $incomeGroup = 1;
} elseif ($income <=4) {
  $incomeGroup = 2;
} elseif ($income <=5) {
  $incomeGroup = 3;
} elseif ($income <=8) {
  $incomeGroup = 4;
} else {
  $incomeGroup = 5;
}

// Abruf der vorliegenden Fälle für diese Merkmalsausprägung
$casesIncome    = statistic('count', 'SC16_02', $incomeGroup);


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

e) polit. Orientierung

$quotaPol = [
1 => 1,  
2 => 1,  
3 => 1,  
4 => 1,  
5 => 1,  
];

$pol = value('SC02_01');

// Abruf der vorliegenden Fälle für diese Merkmalsausprägung
$casesPol    = statistic('count', 'SC03_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%');
}

**f) sowie auf der letzten Seite der Fragebogens vorm redirect-Link:**

//Kopieren der Quotenmerkmale
$pol = value('SC02_01');
put('SC03_01', $pol);

$Gender = value('SO_01');
put('SC13_01', $gender);

$Age = value('SO_03');
put('SC14_02', $age);

$Edu = value('SO_04');
put('SC15_02', $edu);

$Income = value('SO_06');
put('SC16_02', $income);

redirect('https://survey.maximiles.com/complete?p=123907_32b0ddb4&m=%reference%');

Selbstverständlich bleiben die Quoten nicht dauerhaft so gering, das ist nur zum Testen.

Sind die Variablenbezeichnungen richtig abgeleitet/genutzt:

- normale Variablenbezeichnung in der Klammer hinter value(): hier habe ich nicht im Fragenkatalog auf der linken Seite in der SoSci-Oberfläche, sondern auf der jeweiligen Frage-Seite unter "weitere Einstellungen" durch Klick auf "variablen" die jeweilige Bezeichnung ausgelesen. War das korrekt oder sollte ich die jeweilige Bezeichnung aus dem Fragebogenkatalog nutzen?

- interne Variablenbezeichnung beim Abruf der vorliegenden Fälle: Dazu habe ich jeweils eine interne Variable angelegt und dort ebenfalls unter dem Button "Variablen" rauskopiert, was dort in der ersten Zeilen der Variablen stand. Der Kürzel könnte sich aber ja auch auf die erste der einzelnen angezeigten Antwortmöglichkeiten beziehen. Sollte ich daher z.B. aus 'SC03_01' einfach 'SC03_00' oder aus 'SC15_02' einfach 'SC15_00' machen?

by SoSci Survey (306k points)
Damit das funktioniert, müssen die umkodierten Gruppen am Ende des Fragebogens in die internen Variablen gespeichert werden - haben Sie dafür am Ende noch entsprechenden Code verwendet?

Also vorne:

- Umkodieren und
- Quoten prüfen

und hinten:

- Umkodieren und
- Gruppenzugehörigkeit in interne Variablen speichern
by s275430 (140 points)
Vielen Dank für Ihre Antwort.

Ja, ich habe am Ende des Fragebogens die internen Variablen nochmal abgespeichert. Der Code ist im Verlauf am Ende von e) polit. Orientierung vlt. etwas untergegangen.

Dort habe ich bisher stehen:
//Kopieren der Quotenmerkmale
$pol = value('SC02_01');
put('SC03_01', $pol);

$Gender = value('SO_01');
put('SC13_01', $gender);

$Age = value('SO_03');
put('SC14_02', $age);

$Edu = value('SO_04');
put('SC15_02', $edu);

$Income = value('SO_06');
put('SC16_02', $income);

redirect('https://survey.maximiles.com/complete?p=123907_32b0ddb4&m=%reference%');

--> der Fehler war dann, dass hier die Gruppenzugehörigkeit fehlt?

Also müsste hier dann stehen:
//Kopieren der Quotenmerkmale
$pol = value('SC02_01');
put('SC03_01', $pol);

$Gender = value('SO_01');
put('SC13_01', $gender);

$Age = value('SO_03');
put('SC14_02', $ageGroup);

$Edu = value('SO_04');
put('SC15_02', $eduGroup);

$Income = value('SO_06');
put('SC16_02', $incomeGroup);

redirect('https://survey.maximiles.com/complete?p=123907_32b0ddb4&m=%reference%');

?
by s275430 (140 points)
Leider funktioniert es immer noch nicht.

Was genau meinen Sie mit Umkodieren am Ende?
Muss ich am Ende des Fragebogens in den PHP-Code nochmal diese Abschnitte einfügen:
"$age = value('SO_03');
if ($age <= 33) {
  $ageGroup = 1;
} elseif ($age <= 49) {
  $ageGroup = 2;
} elseif ($age <= 64) {
  $ageGroup = 3;
} elseif ($age <= 100) {
  $ageGroup = 4;
} else {
  $ageGroup = 5;
}
"
?

Oder hat es doch auch damit zu tun, dass ich die Variablen iwie falsch bezeichnet habe?

1 Answer

0 votes
by SoSci Survey (306k points)

Was genau meinen Sie mit Umkodieren am Ende?

Genau, damit meine ich, dass das Alter in eine Altersgruppe umkodiert wird. Dies müssen Sie am Ende des Fragebogens - vor dem redirect() - nochmal machen, und das Ergebnis dann mit

put('SC14_02', $ageGroup);

in die interne Variable speichern, sodass Ihr Code vorne zur Quotenprüfung

$casesAge    = statistic('count', 'SC14_02', $ageGroup);

überhaupt etwas zählen kann. Prüfen Sie bitte, ob in allen Ihren internen Variablen in den bisherigen Testfällen Zahlen stehen. Wenn nicht, dann klappt das mit dem put() noch nicht.

Zum Testen starten sie den Fragebogen bitte im Debug-Modus, und springen sie dann direkt nach der Seite mit dem Quotencheck zur Seite mit dem put() und redirect(). Prüfen Sie außerdem auf der Seite mit der Quotenprüfung, was die Debug-Information dort im Detail anzeigt.

Und eine Kleinigkeit noch:

$age = value('SO_03');

Haben Sie die Variable tatsächlich in SO_03 umbenannt, oder geht es um die Variable SO03 (ohne Unterstrich)?

by s275430 (140 points)
Vielen Dank für die Hinweise, wie der Code am Endes des Fragebogens noch einmal anzupassen war. Die Quotierung jeweils einzeln für die 5 Merkmale (age, gender, education, income und polit. Orientierung) funktioniert jetzt.

Allerdings komme ich in den weiter hinter ligenden Quoten (z.B. pol. Orientierung) ja wahrscheinlich gar nicht auf die gewünschten Teilnehmerzahlen, wenn mir nach der Abfrage des Geschlechts allein die Versuchspersonen schon aussortiert werden...oder ist das ein Denkfehler und gar kein Problem, weil die Personen, bei denen z.B. das Geschlecht noch in die Quote passt, aber später die Quote ihres Bildungsgrads oder ihrer Einkommensgruppe schon erfüllt ist, gar nicht bis zum Ende des Fragebogens kommen und somit auch nicht für die Gender-Quote gezählt werden?
by SoSci Survey (306k points)
Also, wenn die Quote nach z.B. Geschlecht voll ist, dann kann die Quote nach politischer Orientierung nur noch mit dem restlichen Geschlecht aufgefüllt werden. Das kann zum Problem werden, wenn Sie dann überwiegend politisch linke Frauen und lauter politisch rechte Männer im Sample haben. Dagegen hilft nur, mit verbundenen Quote zu arbeiten. Da machen die Institute aber häufig nicht mehr, die die Befragten rekrutieren.

Ansonsten ist es dank Nutzung der internen Variablen so, wie Sie beschrieben haben: Gezählt werden nur die Fälle, bei denen etwas in der internen Variable steht (welche gezählt wird), und wer vorher abgewiesen wird, bekommt eben einen Eintrag in die interne Variable.
ago by s275430 (140 points)
alles klar, dankeschön! :)

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

...