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

0 votes

Hallo liebes SoSci Team,

ich habe eine Umfrage, die mittels drei Kriterien quotiert werden soll. Diese hängen dabei jeweils von einer Variable, die eine Region beschreibt ab.

Der Screenout funktioniert mit dem folgendem Code gut, allerdings ist aufgefallen, dass wenn ich erst einen männlichen Probanden aus der Region 1 ohne Studienabschluss und im Jahr 2002 geboren, und nachfolgend eine weibliche Probandin mit Studienabschluss und 1955 geboren simuliere, die zweite Probandin durch ein Quotafull Redirect die Umfrage verlässt. Allerdings dürfte das meines Verständnisses nach nicht passieren, da die beiden Personen zwar aus der gleichen Regionengruppe stammen, aber sonst überschneidungsfrei in den Merkmalen sind. Momentan weist diese Code jeden ab, der in der gleichen Region wie ein vorheriger Proband ist, ungeachtet dessen, dass bspw. noch eine weibliche Probandin in die Quoten passen würde.

Kann mir jemand dabei helfen?
Das würde mir sehr weiterhelfen, und vielen Dank im Voraus,

$quotaEducationRegion = [
    '1-1' => 1, '1-2' => 1, //Personen pro Altersgruppe pro Region 1
    '2-1' => 1, '2-2' => 1, //Personen pro Altersgruppe pro Region 2
    '3-1' => 1, '3-2' => 1 //Personen pro Altersgruppe pro Region 3
];

$quotaAgeRegion = [
    '1-1' => 1, '1-2' => 1, '1-3' => 1, '1-4' => 1, //Personen pro Altersgruppe pro Region 1
    '2-1' => 1, '2-2' => 1, '2-3' => 1, '2-4' => 1, //Personen pro Altersgruppe pro Region 2
    '3-1' => 1, '3-2' => 1, '3-3' => 1, '3-4' => 1 //Personen pro Altersgruppe pro Region 3
];

$quotaGenderRegion = [
    '1-1' => 1, '1-2' => 1, //Personen pro Altersgruppe pro Region 1
    '2-1' => 1, '2-2' => 1, //Personen pro Altersgruppe pro Region 2
    '3-1' => 1, '3-2' => 1 //Personen pro Altersgruppe pro Region 3
];

//Geschlecht wird direkt ausgelesen
$gender = value('QU03');

//Alter wird kodiert
$age = value('QU02');
if ($age == 'QU02_1' || 
    $age == 'QU02_2' || 
    $age == 'QU02_3' ||  
    $age == 'QU02_4' ||
    $age == 'QU02_5' ||
    $age == 'QU02_6' ||
    $age == 'QU02_7' ||
    $age == 'QU02_8') {
  $ageGroup = 1;
} elseif ($age = 'QU02_9' || 
    $age == 'QU02_10' || 
    $age == 'QU02_11' ||
    $age == 'QU02_12' ||  
    $age == 'QU02_13'){
  $ageGroup = 2;
} elseif ($age = 'QU02_14' || 
    $age == 'QU02_15' || 
    $age == 'QU02_16' ||
    $age == 'QU02_17' ||
    $age == 'QU02_18' ||
    $age == 'QU02_19' ||
    $age == 'QU02_20' ||
    $age == 'QU02_21' ||
    $age == 'QU02_22' ||
    $age == 'QU02_23' ||
    $age == 'QU02_24' ||
    $age == 'QU02_25' ||
    $age == 'QU02_26' ||
    $age == 'QU02_27' ||
    $age == 'QU02_28' ||
    $age == 'QU02_29' ||
    $age == 'QU02_30' ||
    $age == 'QU02_31' ||
    $age == 'QU02_32' ||  
    $age == 'QU02_33'){
  $ageGroup = 3;
} elseif ($age = 'QU02_34' || 
    $age == 'QU02_35' || 
    $age == 'QU02_36' ||
    $age == 'QU02_37' ||
    $age == 'QU02_38' ||
    $age == 'QU02_39' ||
    $age == 'QU02_40' ||
    $age == 'QU02_41' ||
    $age == 'QU02_42' ||
    $age == 'QU02_43' ||
    $age == 'QU02_44' ||
    $age == 'QU02_45' ||
    $age == 'QU02_46' ||
    $age == 'QU02_47' || 
    $age == 'QU02_48'){
  $ageGroup = 4;
}

//Bildung wird umkodiert
$education = value('QU01');
if ($education == 'QU01_1' || 
    $education == 'QU01_2' || 
    $education == 'QU01_3' || 
    $education == 'QU01_4' || 
    $education == 'QU01_8') {
  $educationGroup = 1;
} else {
  $educationGroup = 2;
}






//Gruppen werden kodiert GENDER
$regionGender = value('RI09_01');
if ($regionGender == '20038' ||
    $regionGender == '20088' ||
    $regionGender == '20095' ||
    $regionGender == '20097' ||
    $regionGender == '20099' ||
    $regionGender == '20144' ||
    $regionGender == '20146' ||
    $regionGender == '20148' ||
    $regionGender == '91475' ||
    $regionGender == '91487' ||
    $regionGender == '96172' ||
    $regionGender == '96193') {
  $regionGenderGroupGender = 1;
} elseif ($regionGender == '41812' ||
    $regionGender == '41836' ||
    $regionGender == '41844' ||
    $regionGender == '41849' ||
    $regionGender == '78730' ||
    $regionGender == '78733' ||
    $regionGender == '78736' ||
    $regionGender == '78737' ||
    $regionGender == '78739' ||
    $regionGender == '88529') {
  $regionGenderGroupGender = 2;
} elseif ($regionGender == '01945' ||
    $regionGender == '01968' ||
    $regionGender == '01979' ||
    $regionGender == '01983' ||
    $regionGender == '01987' ||
    $regionGender == '01990' ||
    $regionGender == '01993' ||
    $regionGender == '96152' ||
    $regionGender == '97215' ||
    $regionGender == '97258') {
  $regionGroupGender = 3;
}

//Gruppen werden kodiert EDUCATION
$regionEducation= value('RI09_01');
if ($regionEducation== '20038' ||
    $regionEducation== '20088' ||
    $regionEducation== '20095' ||
    $regionEducation== '20097' ||
    $regionEducation== '96172' ||
    $regionEducation== '96193') {
  $regionGroupEducation = 1;
} elseif ($regionEducation== '41812' ||
    $regionEducation== '41836' ||
    $regionEducation== '41844' ||
    $regionEducation== '41849' ||
    $regionEducation== '52062' ||
    $regionEducation== '78736' ||
    $regionEducation== '78737' ||
    $regionEducation== '78739' ||
    $regionEducation== '88529') {
  $regionGroupEducation = 2;
} elseif ($regionEducation== '01945' ||
    $regionEducation== '01968' ||
    $regionEducation== '01979' ||
    $regionEducation== '01983' ||
    $regionEducation== '01987' ||
    $regionEducation== '01990' ||
    $regionEducation== '01993' ||
    $regionEducation== '01994' ||
    $regionEducation== '01996' ||
    $regionEducation== '01998' ||
    $regionEducation== '03042' ||
    $regionEducation== '03044' ||
    $regionEducation== '96152' ||
    $regionEducation== '97215' ||
    $regionEducation== '97258') {
  $regionGroupEducation = 3;
}


//Gruppen werden kodiert AGE
$regionAge= value('RI09_01');
if ($regionAge== '20038' ||
    $regionAge== '20088' ||
    $regionAge== '20095' ||
    $regionAge== '20097' ||
    $regionAge== '20099' ||
    $regionAge== '20144' ||
    $regionAge== '20146' ||
    $regionAge== '96172' ||
    $regionAge== '96193') {
  $regionGroupAge = 1;
} elseif ($regionAge== '41812' ||
    $regionAge== '41836' ||
    $regionAge== '41844' ||
    $regionAge== '41849' ||
    $regionAge== '52062' ||
    $regionAge== '78730' ||
    $regionAge== '78733' ||
    $regionAge== '78736' ||
    $regionAge== '78737' ||
    $regionAge== '78739' ||
    $regionAge== '88529') {
  $regionGroupAge = 2;
} elseif ($regionAge== '01945' ||
    $regionAge== '03226' ||
    $regionAge== '03229' ||
    $regionAge== '03238' ||
    $regionAge== '03246' ||
    $regionAge== '03249' ||
    $regionAge== '03253' ||
    $regionAge== '04895' ||
    $regionAge== '04910' ||
    $regionAge== '97215' ||
    $regionAge== '97258') {
  $regionGroupAge = 3;
}






// Definition einer Variable mit Region und Geschlecht
$demEducationRegion = $regionGroupEducation.'-'.$educationGroup;
$demAgeRegion = $regionGroupAge.'-'.$ageGroup;
$demGenderRegion = $regionGroupGender.'-'.$gender;

// Abruf der vorliegenden Fälle für diese Merkmalsausprägung
$casesEducation = statistic('count', 'IV01_03', $demEducationRegion);
$casesAge = statistic('count', 'IV01_01', $demAgeRegion);
$casesGender = statistic('count', 'IV01_02', $demGenderRegion);

// Screenout

if (!array_key_exists($demEducationRegion, $quotaEducationRegion) || !array_key_exists($demAgeRegion, $quotaAgeRegion) || !array_key_exists($demGenderRegion, $quotaGenderRegion)) {
  redirect('https://www.panelanbieter.de/?xyz=screenoutGHIJKI&uid=%reference%');
}

// Auslesen der Quote für die demografische Gruppe
$maxPerGroupEducationRegion = $quotaEducationRegion[$demEducationRegion];
$maxPerGroupAgeRegion = $quotaAgeRegion[$demAgeRegion];
$maxPerGroupGenderRegion = $quotaGenderRegion[$demGenderRegion];
 
// Quotenstopp
if (($casesEducation >= $maxPerGroupEducationRegion) || ($casesAge >= $maxPerGroupAgeRegion) || ($casesGender >= $maxPerGroupGenderRegion)) {
  redirect('https://www.panelanbieter.de/?xyz=quotaABCDEF&uid=%reference%');
}
in SoSci Survey (dt.) by s110744 (190 points)

1 Answer

0 votes

Sie schreiben in Ihrem Code vielfach etwas in dieser Art:

$age == 'QU02_1'

Die Variable $age wird aber einen Code, z.B. 1, 2 oder 3 enthalten. Insofern wird die o.g. Bedingung m.E. nicht zutreffen.

Ich empfehle, kurz in das folgende Kapitel der Anleitung hineinzulesen:
Filterfragen (PHP-Filter)

by SoSci Survey (130k points)
Vielen Dank für Ihre schnelle Rückmeldung.
Ich muss leider nochmal nachhaken, weil ich nicht ganz verstehe was Sie damit meinen.
Die Altersabfrage ist in diesem Fall ein Drop-Down Menü und die QU02_1 ist der Variablencode für das Geburtsjahr 2002 beispielsweise. Im Debugging Modus kann ich auch sehen, dass der Code die Probanden grundsätzlich richtig in die Quotengruppen einzuordnen scheint.
Könnten Sie nochmal genauer erläutern was Sie damit meinen, wenn es unter diesen Umständen noch zutrifft?

Das würde mir wirklich sehr helfen, da das empfohlene Kapitel mir an der Stelle noch nicht richtig weitergeholfen hat.
> und die QU02_1 ist der Variablencode

Ich bin ziemlich sicher, dass das "nur" die Kennung der Option im Fragenkatalog ist. Der Code ist vermutlich einfach nur die Zahl 1 (ohne Anführungszeichen dann). Prüfen Sie das gerne nochmal in der "Variablen-Übersicht".
Vielen Dank für Ihre Antwort jetzt habe ich verstanden was gemeint ist. Ich habe den Fehler nun gefunden und korrigieren können.
...