0 votes
in SoSci Survey (dt.) by s205009 (110 points)
closed by s205009

Hallo,

ich habe versucht die Programmierung nach der Anleitung zu gestalten. Wir haben eine verbundene Quote (Altersgruppen und Geschlecht), eine unverbundene (Bundesländer) und zusätzlich über eine Quote noch Plätze für Geschlecht divers reserviert, welches wir aufgrund fehlender statistischer Daten nicht in die anderen Quoten aufnehmen können.

Der Screenout-Link sollte nur aktiviert werden, wenn eine Vpn unter 18 Jahre ist.

Dennoch wird er bei jedem Test aktiviert. Ich kann nicht nachvollziehen warum. Hier ist mein Code. Ich würde mich über Lösungstipps freuen.

    // Array Altersgruppen & Geschlecht (1w, 2m)
$quotaDemGroup = [
// Personen pro Geschlecht für die Altersgruppe 1 (18 - 27 Jahre)
    '1-1' => 63, 
    '1-2' => 68,  
// Personen pro Geschlecht für die Altersgruppe 2 (28 - 37 Jahre)
    '2-1' => 76, 
    '2-2' => 81,
// Personen pro Geschlecht für die Altersgruppe 3 (38 - 47 Jahre)
    '3-1' => 73, 
    '3-2' => 74,  
// Personen pro Geschlecht für die Altersgruppe 4 (48 - 57 Jahre)
    '4-1' => 90,  
    '4-2' => 90,  
// Personen pro Geschlecht für die Altersgruppe 5 (58 - 67 Jahre)
    '5-1' => 87,  
    '5-2' => 84,  
// Personen pro Geschlecht für die Altersgruppe 6 (ab 68 Jahren)
    '6-1' => 127,  
    '6-2' => 97,
// für Personen mit Geschlecht divers sind 15 Plätze aus dem Oversampling
    '0' => 15
];


//Array Bundesländer
$quotaState = [
    '1' => 134, //Baden-Württemberg
    '2' => 160, //Bayern
    '3' => 45, //Berlin
    '4' => 31, //Brandenburg
    '5' => 8, //Bremen
    '6' => 22, //Hamburg
    '7' => 76, //Hessen
    '8' => 20, //Mecklenburg-Vorpommern
    '9' => 97, //Niedersachsen
    '10' => 217, //Nordrhein-Westfalen
    '11' => 50, //Rheinland-Pfalz
    '12' => 12, //Saarland
    '13' => 49, //Sachsen
    '14' => 27, //Sachsen-Anhalt
    '15' => 36, //Schlesweig Holstein
    '16' => 26 //Thüringen
];


#################################################

// Auslesen der Werte
// Geschlecht wird direkt ausgelesen: 1w, 2m, 3d
$gender = value('SD02');

// Das Alter wird ausgelesen und umkodiert in Altersgruppen
$age = value('SD01');
if ($age < 18) {
  $ageGroup = 0;
} elseif ($age >= 18 && $age <= 27) {
  $ageGroup = 1;
} elseif ($age <= 37) {
  $ageGroup = 2;
} elseif ($age <= 47) {
  $ageGroup = 3;
} elseif ($age <= 57) {
  $ageGroup = 4;
} elseif ($age <= 67) {
  $ageGroup = 5;
} else {
  $ageGroup = 6;
}

// Kombination aus Altersgruppe und Geschlecht (Bsp: 3 und 2 wird zu '3-2')
$demGroup = $ageGroup.'-'.$gender;

// Gender divers bekommt eigene demGroup Kennzeichnung
if ($gender = 3) {
  $demGroup = '0';
} 

// Bundesländer werden ausgelesen
$state = value('SD23');


#################################################

// Screenout für U18
if ($ageGroup == 0) {
  redirect('Panellink1');  
}


#################################################

// Abruf der vorliegenden Fälle demografische Gruppe und Bundesländer
$casesDemGroup = statistic('count', 'IV01_01', $demGroup);
$casesState = statistic('count', 'IV01_02', $state);

// Auslesen der Quote für die demografische Gruppe und Bundesländer
$maxPerDemGroup = $quotaDemGroup[$demGroup];
$maxPerState = $quotaState[$state];

// Quotenstopp
if (($casesGroup >= $maxPerDemGroup || $casesState >= $maxPerState )) {
  redirect('Panellink2');
}
closed with the note: Lösung: Tippfehler in der Age-Variable und in Operator bei ($gender == 3)

1 Answer

0 votes
by SoSci Survey (305k points)

Kommentieren Sie beide redirect() bitte einmal aus und stellen Sie ein debug() darunter, also ...

if ($ageGroup == 0) {
  // redirect('Panellink1');  
  debug($age);
}

und

if (($casesGroup >= $maxPerDemGroup || $casesState >= $maxPerState )) {
  // redirect('Panellink2');
  debug($maxPerDemGroup);
  debug($maxPerState);
}

Testen Sie anschließend im Debug-Modus und prüfen Sie, was die Debug-Information rechts oben berichtet.

by s205009 (110 points)
Danke,

das hat alles geklärt. Es war am Ende ein einfacher Fehler in der age-Variable.

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

...