0 votes
in SoSci Survey (dt.) by s143395 (120 points)

Hallo zusammen,

ich habe ein Frage bezüglich Verbundener Quoten (Alter x Geschlecht), die wir zu Beginn der Befragung abfragen. Für das Geschlecht (RE02) und Alter (RE01) habe ich den folgenden PHP Code erstellt:

$quota = [
  '1-1' => 100, '1-2' => 93,  // 100 Männer, 93 Frauen für die Altersgruppe 1
  '2-1' => 151, '2-2' => 141,  // 151 Männer, 141 Frauen für die Altersgruppe 2
  '3-1' => 144,  '3-2' => 140,   // 144 Männer, 140 Frauen für die Altersgruppe 3
  '4-1' => 159,  '4-2' => 157,   // 159 Männer, 157 Frauen für die Altersgruppe 4
  '5-1' => 170,  '5-2' => 173,   // 170 Männer, 173 Frauen für die Altersgruppe 5
  '6-1' => 105,  '6-2' => 117,   // 105 Männer, 117 Frauen für die Altersgruppe 6
  '1-3' => 0,  '2-3' => 0, '3-3' => 0, '4-3' => 0, '5-3' => 0, '6-3' => 0,  // 0 Personen mit Geschlecht divers für alle Altersgruppen 

];

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

// Das Alter wird umkodiert
$age = value('RE01');
} elseif ($age <= 25) {
  $ageGroup = 1;
} elseif ($age <= 35) {
  $ageGroup = 2;
} elseif ($age <= 45) {
  $ageGroup = 3;
} elseif ($age <= 55) {
  $ageGroup = 4;
} elseif ($age <=65) {
  $ageGroup = 5;
} elseif ($age <= 100) {
  $ageGroup = 6;

// Definition einer Variable mit Altesgruppe und Geschlecht
// Aus 3 und 2 wird hier '3-2'
$demGroup = $ageGroup.'-'.$gender;
 
// Speichern der Gruppenzugehörigkeit in der internen Variable SD04_01
put('SD04_01', $demGroup);
 
// Complete-Redirect
redirect('https://www.respondi.com ');

Meine Fragen:
1) Ist die Quoten Definition für das Geschlecht divers so richtig, d.h. dass alle Personen dieser Kategorie direkt weitergeleitet werden?
2) Ist der Code so korrekt und muss ich diesen Quellcode komplett direkt nach der Erfragung von Alter & Geschlecht auf der ersten Seite integrieren?

Ich arbeite das erste mal mit Quotierungen bei SosciSurvey und freue mich über Rückmeldungen.

Vielen Dank vorab!

1 Answer

0 votes
by SoSci Survey (301k points)

Nur Als Anmerkung: Im Code Ihrer Frage scheint ein if zu fehlen, stattdessen startet der Filter direkt mit einem elseif.

$age = value('RE01');
} elseif ($age <= 25) {

dafür fehlt hinter dem $ageGroup = 6; noch eine geschweifte Klammer.

1) Ist die Quoten Definition für das Geschlecht divers so richtig, d.h. dass alle Personen dieser Kategorie direkt weitergeleitet werden?

Der PHP-Code in der Anleitung arbeitet noch mit einem array_key_exists(), sodass alle Gruppen abgewiesen werden, die nicht in der Liste auftauchen. Das würde ich generell empfehlen, aber mit einer 0 wird es auch funktionieren.

2) Ist der Code so korrekt und muss ich diesen Quellcode komplett direkt nach der Erfragung von Alter & Geschlecht auf der ersten Seite integrieren?

Den Teil bis $demGroup = $ageGroup.'-'.$gender; brauchen Sie zweimal. Einmal am Ende, wo das put() folgt, und einmal am Anfang, wo dann noch statistic() fehlt und der eigentliche Filter, der vergleicht, ob die Gruppe schon "voll" ist.

by s143395 (120 points)
Hallo, vielen Dank für die schnelle Rückmeldung. Ich habe nun bereits ein paar Fehler beseitigt und auch den Filter ergänzt. Wenn ich es richtig verstehe, müsste es dann so ablaufen:

Unter der Erfragung von Alter & Geschlecht füge ich den Code ein:

$quota = [
  '1-1' => 100, '1-2' => 93,  // 100 Männer, 93 Frauen für die Altersgruppe 1
  '2-1' => 151, '2-2' => 141,  // 151 Männer, 141 Frauen für die Altersgruppe 2
  '3-1' => 144,  '3-2' => 140,   // 144 Männer, 140 Frauen für die Altersgruppe 3
  '4-1' => 159,  '4-2' => 157,   // 159 Männer, 157 Frauen für die Altersgruppe 4
  '5-1' => 170,  '5-2' => 173,   // 170 Männer, 173 Frauen für die Altersgruppe 5
  '6-1' => 105,  '6-2' => 117,   // 105 Männer, 117 Frauen für die Altersgruppe 6
  '1-3' => 0,  '2-3' => 0, '3-3' => 0, '4-3' => 0, '5-3' => 0, '6-3' => 0,  // 0 Personen mit Geschlecht divers für alle Altersgruppen

];

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

// Das Alter wird umkodiert
$age = value('RE01');
  if ($age <= 25) {
  $ageGroup = 1;
} elseif ($age <= 35) {
  $ageGroup = 2;
} elseif ($age <= 45) {
  $ageGroup = 3;
} elseif ($age <= 55) {
  $ageGroup = 4;
} elseif ($age <=65) {
  $ageGroup = 5;
} elseif ($age <= 100) {
  $ageGroup = 6;
}

// Definition einer Variable mit Altersgruppe und Geschlecht
// Aus 3 und 2 wird hier '3-2'
$demGroup = $ageGroup.'-'.$gender;
 
// Speichern der Gruppenzugehörigkeit in der internen Variable SD04_01
put('SD04_01', $demGroup);
 
// Abruf der vorliegenden Fälle für diese Merkmalsausprägung
$cases = statistic('count', 'SD04_01', $demGroup);

// Auslesen der Quote für die demografische Gruppe
$maxPerGroupGender = $quota[$demGroup];

// Quotenstopp
if ($cases >= $maxPerGroupGender) {
  redirect('https://www.respondi.com'); }

Und auf der vorletzten Seite der Befragung folgt dann noch der erste Teil bis put ()

$quota = [
  '1-1' => 100, '1-2' => 93,  // 100 Männer, 93 Frauen für die Altersgruppe 1
  '2-1' => 151, '2-2' => 141,  // 151 Männer, 141 Frauen für die Altersgruppe 2
  '3-1' => 144,  '3-2' => 140,   // 144 Männer, 140 Frauen für die Altersgruppe 3
  '4-1' => 159,  '4-2' => 157,   // 159 Männer, 157 Frauen für die Altersgruppe 4
  '5-1' => 170,  '5-2' => 173,   // 170 Männer, 173 Frauen für die Altersgruppe 5
  '6-1' => 105,  '6-2' => 117,   // 105 Männer, 117 Frauen für die Altersgruppe 6
  '1-3' => 0,  '2-3' => 0, '3-3' => 0, '4-3' => 0, '5-3' => 0, '6-3' => 0,  // 0 Personen mit Geschlecht divers für alle Altersgruppen

];

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

// Das Alter wird umkodiert
$age = value('RE01');
  if ($age <= 25) {
  $ageGroup = 1;
} elseif ($age <= 35) {
  $ageGroup = 2;
} elseif ($age <= 45) {
  $ageGroup = 3;
} elseif ($age <= 55) {
  $ageGroup = 4;
} elseif ($age <=65) {
  $ageGroup = 5;
} elseif ($age <= 100) {
  $ageGroup = 6;
}

// Definition einer Variable mit Altersgruppe und Geschlecht
// Aus 3 und 2 wird hier '3-2'
$demGroup = $ageGroup.'-'.$gender;
 
// Speichern der Gruppenzugehörigkeit in der internen Variable SD04_01
put('SD04_01', $demGroup);


Ich habe das soeben einmal im Debug Modus durchgeklickt, es kommt keine Fehlermeldung aber ich land direkt wenn ich auf der Seite mit der Abfrage von Alter & Geschlecht bin auf die weitergeleitete Seite. Stimmt hier noch etwas mit dem Filterbefehl nicht?

Ich freue mich auf die Rückmeldung.
by SoSci Survey (301k points)
> Unter der Erfragung von Alter & Geschlecht füge ich den Code ein:

Nicht ganz. Den value()-Befehl zum Abrufen der Antworten können Sie erst auf der nächsten Seite (!) verwenden.

// Speichern der Gruppenzugehörigkeit in der internen Variable SD04_01
put('SD04_01', $demGroup);

Das machen Sie nur am Ende - und zwar an der Stelle ab wo der Fall für die Quote zählen soll.

// Abruf der vorliegenden Fälle für diese Merkmalsausprägung
$cases = statistic('count', 'SD04_01', $demGroup);

Das wiederum brauchen Sie nur vorne, wo die Quote kontrolliert wird.

> redirect('https://www.respondi.com');

Klar, dass da noch die Parameter fehlen, insb. die Personen-ID vom Panel.

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

...