0 votes
in SoSci Survey (dt.) by s195837 (170 points)
closed by SoSci Survey

Hallo,

ich arbeite mit einem Panel-Anbieter zusammen und muss meine Stichprobe nach Geschlecht und Alter quotieren dabei habe ich folgende Verteilungen:

18-24 Jahre: 7  Frauen  & 8 Männer
25-34 Jahre: 13  Frauen  & 13 Männer
35-44 Jahre	: 13  Frauen  & 14 Männer
45-54 Jahre	: 13  Frauen  & 14 Männer
55-64 Jahre	 : 15  Frauen  & 15 Männer

Ich habe 8 Treatments und pro Treatment sollen 125 Probanden in die Stichprobe fallen.

Auf der 1. Seite des Fragebogens habe ich die beiden Fragen zum Geschlecht und Alter gestellt.
Auf der 2. Seite habe ich dann folgenden PHP-Code eingepflegt:

// Quotenstopp insgesamt
if (statistic('count', 'A120') > 125) 
{ redirect('https://gateway.gapfish.com/routings/participation_id/finish/quota_full'); }

// Quotenprüfung zu Beginn. 1=weiblich, 2=männlich, 1-5 Age-Groups $quota = [
'1-1' => 7, 
'1-2' => 13, 
'1-3' => 13, 
'1-4' => 13, 
'1-5' => 15,
'2-1' => 8, 
'2-2' => 13, 
'2-3' => 14, 
'2-4' => 14, 
'2-5' => 15,
];

// Auslesen Geschlecht & Alter 
$gender = value('SD01'); $ageGrp = value('SD03');

// Kennung für die demografische Zelle erstellen 
$demGroup = $gender.'-'.$ageGrp;

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

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

// Quotenstopp Demografisch
if ($cases >= $maxPerGroup) 
{ redirect('https://gateway.gapfish.com/routings/participation_id/finish/quota_full'); }

"A120" ist meine interne Variable
--> Die interne Variable muss ich einfach nur ohne Frage und Antworten anlegen richtig?

Bei den Links, die ich vom Panelanbieter erhalten habe, muss ich dann statt "participation_id" %reference% eintragen?

Ist der Code zur Quotierung so richtig?

Wichtig ist, dass immer nach 125 erfassten Teilnehmern, die mit der Verteilung übereinstimmen, ein Quotenstopp eingelegt wird.

closed with the note: Das Problem wurde vermutlich gelöst?!
by SoSci Survey (289k points)
Das wird nicht funktionieren. Sie müssten die demografische Gruppe $demGroup (am besten gegen Ende des Fragebogens) in eine interne Variable speichern und diese dann im statistic()-Befehl zählen. Die Kennung A120 stimmt da höchstwahrscheinlich nicht.
by s195837 (170 points)
edited by s195837
und was wäre mit dem folgenden Code?:

$quota = [
  '1-1' => 7, '1-2' => 8,  // 7 Frauen und 8 Männer für die Altersgruppe 1
  '2-1' => 13, '2-2' => 13,  // 13 Personen pro Geschlecht für die Altersgruppe 2
  '3-1' => 13, '3-2' => 14,  // 13 Frauen und 14 Männer für die Altersgruppe 3
  '4-1' => 13,  '4-2' => 14,   //  13 Frauen und 14 Männer für die Altersgruppe 4
  '5-1' => 15,  '5-2' => 15    //  15 Personen pro Geschlecht für die Altersgruppe 5
];

// Geschlecht wird direkt ausgelesen
$gender = value('SD01');
// Das Alter wird umkodiert
$age = value('SD03');
if ($age < 18) {
  $ageGroup = 1;
} elseif ($age <= 25) {
  $ageGroup = 2;
} elseif ($age <= 35) {
  $ageGroup = 3;
} elseif ($age <= 45) {
  $ageGroup = 4;
} elseif ($age <= 64) {
  $ageGroup = 5;
}

// Definition einer Variable mit Altesgruppe und Geschlecht
// Aus 3 und 2 wird hier '3-2'
$demGroup = $ageGroup.'-'.$gender;

// Abruf der vorliegenden Fälle für diese Merkmalsausprägung
$cases = statistic('count', 'SD20_01', $demGroup);
 
// Screenout
if (!array_key_exists($demGroup, $quota)) {
  redirect('https://gateway.gapfish.com/routings/participation_id/finish/screenout');
}
 
// Auslesen der Quote für die demografische Gruppe
$maxPerGroup = $quota[$demGroup];
 
// Quotenstopp
if ($cases >= $maxPerGroup) {
  redirect('https://gateway.gapfish.com/routings/participation_id/finish/quota_full');
}
by SoSci Survey (289k points)
Irgendwo brauchen Sie ein put(), welches den Wert aus $demGroup in die interne Variable speichert, damit Sie das später auszählen können.
by s195837 (170 points)
Wäre der put() nicht hier?:

// Abruf der vorliegenden Fälle für diese Merkmalsausprägung
$cases = statistic('count', 'SD20_01', $demGroup);
by SoSci Survey (289k points)
Ich sehe da keinen Aufruf der Funktion put().

Der Punkt ist: Am Schluss muss im Datensatz irgendwo der Code stehen, den Sie für die demografische Gruppe ermittelt haben, also "1-1" oder "3-1". Dafür müssen Sie den Teil zwischen "// Geschlecht wird direkt ausgelesen" und "$demGroup = $ageGroup.'-'.$gender;" auf einer der letzten Seiten nochmal einbinden und am Ende ein:

put('IV01_01', $demGroup);

ergänzen. Das IV01_01 müssen Sie natürlich durch die interne Variable ersetzen, die Sie in dem Code auf der vorderen Seite dann mit statistic() zählen.
by s195837 (170 points)
Ah okay vielen Dank!
Auf S.1 frage ich nach dem Geschlecht & Alter


Aus S. 2 füge ich folgenden Code ein:
$quota = [
  '1-1' => 7, '1-2' => 8,  // 7 Frauen und 8 Männer für die Altersgruppe 1
  '2-1' => 13, '2-2' => 13,  // 13 Personen pro Geschlecht für die Altersgruppe 2
  '3-1' => 13, '3-2' => 14,  // 13 Frauen und 14 Männer für die Altersgruppe 3
  '4-1' => 13,  '4-2' => 14,   //  13 Frauen und 14 Männer für die Altersgruppe 4
  '5-1' => 15,  '5-2' => 15    //  15 Personen pro Geschlecht für die Altersgruppe 5
];

// Geschlecht wird direkt ausgelesen
$gender = value('SD01');
// Das Alter wird umkodiert
$age = value('SD03');
if ($age < 18) {
  $ageGroup = 1;
} elseif ($age <= 25) {
  $ageGroup = 2;
} elseif ($age <= 35) {
  $ageGroup = 3;
} elseif ($age <= 45) {
  $ageGroup = 4;
} elseif ($age <= 64) {
  $ageGroup = 5;
}

// Definition einer Variable mit Altesgruppe und Geschlecht
// Aus 3 und 2 wird hier '3-2'
$demGroup = $ageGroup.'-'.$gender;

// Abruf der vorliegenden Fälle für diese Merkmalsausprägung
$cases = statistic('count', 'SD20_01', $demGroup);
 
// Screenout
if (!array_key_exists($demGroup, $quota)) {
  redirect('https://gateway.gapfish.com/routings/participation_id/finish/screenout');
}
 
// Auslesen der Quote für die demografische Gruppe
$maxPerGroup = $quota[$demGroup];
 
// Quotenstopp
if ($cases >= $maxPerGroup) {
  redirect('https://gateway.gapfish.com/routings/participation_id/finish/quota_full');



Und auf der vorletzten Seite füge ich folgenden Code ein:

// Geschlecht wird direkt ausgelesen
$gender = value('SD01');
// Das Alter wird umkodiert
$age = value('SD03');
if ($age < 18) {
  $ageGroup = 1;
} elseif ($age <= 25) {
  $ageGroup = 2;
} elseif ($age <= 35) {
  $ageGroup = 3;
} elseif ($age <= 45) {
  $ageGroup = 4;
} elseif ($age <= 64) {
  $ageGroup = 5;
}
 
// 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 SD20_01
put('SD20_01', $demGroup);
 
// Complete-Redirect
redirect('https://gateway.gapfish.com/routings/participation_id/finish/completed');


Ist das korrekt?
by s195837 (170 points)
Bei einer Frage von 2017 habe ich einen Alternativen Code gesehen, den ich auf meine Situation angepasst habe.

Hier der Code für die 2. Seite:


// Merkmale auslesen
$ageGrp = value('SD03');
$gender = value('SD01');
 
// Kennung für die demografische Zelle erstellen
$demID = $gender.'-'.$ageGrp;

// Quotenprüfung zu Beginn. 1=weiblich, 2=männlich, 1-5 Age-Groups $quota = [
'1-1' => 7,
'1-2' => 13,
'1-3' => 13,
'1-4' => 13,
'1-5' => 15,
'2-1' => 8,
'2-2' => 13,
'2-3' => 14,
'2-4' => 14,
'2-5' => 15,
];


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

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

// Screenout
if (($ageGrp < 2) or ($ageGrp > 5) or ($gender = 3)) {
  redirect('https://gateway.gapfish.com/routings/participation_id/finish/screenout');
}

// Quotenstopp Demografisch
if ($cases >= $maxPerGroup)
{ redirect('https://gateway.gapfish.com/routings/participation_id/finish/quota_full'); }


Code Vorletzte Seite:

$ageGrp = value('SD02');
$gender = value('SD01');
$demID = $gender.'-'.$ageGrp;
$n = statistic('count', 'SD20_01', $demID);
// Complete-Redirect
redirect('https://gateway.gapfish.com/routings/participation_id/finish/completed');


Würde das auch gehen? Bzw. welche Unterschiede existieren zwischen den beiden Versionen?
by SoSci Survey (289k points)
Sieht schon besser aus :)

Die Codes unterscheiden sich darin, ob das Alter direkt in Kategorien abgefragt wird (Variante 2) oder ob es erst aus einer offenen Angabe in die Alterskategorien umgewandelt werden muss. Effektiv also die Umrechnung von $age in $ageGroup.

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

...