Ich habe einen Quotenstop programmiert um eine repräsentative Stichprobe zu bekommen. Wie kann ich Personen die als Geschlecht Divers (=3) angeben, und dementsprechend nicht durch Quotenanteile vorgegeben sind, trotzdem den ganzen Fragebogen ausfüllen lassen? Grade bekommen sie den Quotafull redirect link.
Das ist mein Code
// Quoten-Definition, Geschlecht-Alter-Region; 1=M, 2=F; (1=unter 18), 2=18-24, 3=25-34, 4=35-44, 5=45-54, 6=55-64, 7=65-74; 1=Ostösterreich, 2=Südösterreich, 3=Westösterreich (4=Nicht Österreich)
$quota = [
'1-2-1' => 24, //M, 18-24, Ost
'1-2-2' => 10, //M, 18-24, Süd
'1-2-3' => 19, //M, 18-24, West
'1-3-1' => 42, //M, 25-34, Ost
'1-3-2' => 18, //M, 25-34, Süd
'1-3-3' => 34, //M, 25-34, West
'1-4-1' => 42, //M, 35-44, Ost
'1-4-2' => 18, //M, 35-44, Süd
'1-4-3' => 33, //M, 35-44, West
'1-5-1' => 41, //M, 45-54, Ost
'1-5-2' => 19, //M, 45-54, Süd
'1-5-3' => 34, //M, 45-54, West
'1-6-1' =>42, //M, 55-64, Ost
'1-6-2' => 21, //M, 55-64, Süd
'1-6-3' => 36, //M, 55-64, West
'1-7-1' => 27, //M, 65-74, Ost
'1-7-2' => 14, //M, 65-74, Süd
'1-7-3' => 23, //M, 65-74, West
'2-2-1' => 23, //F, 18-24, Ost
'2-2-2' => 9, //F, 18-24, Süd
'2-2-3' => 18, //F, 18-24, West
'2-3-1' => 41, //F, 25-34, Ost
'2-3-2' => 17, //F, 25-34, Süd
'2-3-3' => 32, //F, 25-34, West
'2-4-1' => 42, //F, 35-44, Ost
'2-4-2' => 18, //F, 35-44, Süd
'2-4-3' => 32, //F, 35-44, West
'2-5-1' => 43, //F, 45-54, Ost
'2-5-2' => 19, //F, 45-54, Süd
'2-5-3' => 34, //F, 45-54, West
'2-6-1' => 43, //F, 55-64, Ost
'2-6-2' => 22, //F, 55-64, Süd
'2-6-3' => 37, //F, 55-64, West
'2-7-1' => 31, //F, 65-74, Ost
'2-7-2' => 16, //F, 65-74, Süd
'2-7-3' => 26, //F, 65-74, West
];
// Geschlecht auslesen
$gender = value('DE01');
// Alter auslesen und in Gruppen kodieren
$age = value('DE02_01');
if ($age < 18) {
$ageGroup = 1;
} elseif ($age <= 24) {
$ageGroup = 2;
} elseif ($age <= 34) {
$ageGroup = 3;
} elseif ($age <= 44) {
$ageGroup = 4;
} elseif ($age <= 54) {
$ageGroup = 5;
} elseif ($age <= 64) {
$ageGroup = 6;
} elseif ($age <= 74) {
$ageGroup = 7;
} else {
$ageGroup = 8; //Für Werte über 74
}
// Region auslesen und in Gruppen kodieren
$region = value('DE03');
if ($region == 1) {
$regionGroup = 1;
} elseif ($region == 2) {
$regionGroup = 2;
} elseif ($region == 3) {
$regionGroup = 3;
} elseif ($region == 4) {
$regionGroup = 4;
}
// Definition einer Variable mit Geschlecht, Altersgruppe und Region
// Aus 1 und 2 und 1 wird hier '1-2-1'
$demGroup = $gender.'-'.$ageGroup.'-'.$regionGroup;
// Abruf der vorliegenden Fälle für diese Merkmalsausprägung
$cases = statistic('count', 'XY1_01', $demGroup);
// Auslesen der Quote für die demografische Gruppe
$maxPerGroup = $quota[$demGroup];
// Quotenstopp
if ($cases >= $maxPerGroup) {
redirect('https://survey.maximiles.com/quotasfull?p=98327_21a4610c&m=%SPM_PANELIST _ID%');
}
// Speichern der Gruppenzugehörigkeit in der internen Variable XY1_01
put('XY1_01', $demGroup);
// Fälle für jede einzelne Kategorie berechnen
$casesAge = statistic('count', 'XY1_01', $gender . '-' . $ageGroup . '-%'); // Fälle für das Alter (geschlechtsübergreifend)
$casesGender = statistic('count', 'XY1_01', $gender . '-%-' . $regionGroup); // Fälle für das Geschlecht (altersübergreifend)
$casesRegion = statistic('count', 'XY1_01', '%-' . $ageGroup . '-' . $regionGroup); // Fälle für die Region (geschlechtsübergreifend)
// Zusätze Informationen anzeigen
debug($casesAge);
debug($casesGender);
debug($casesRegion);