0 votes
in SoSci Survey (dt.) by s109568 (170 points)
edited by s109568

Lieber SoSciSurvey Support,

ich habe vor einiger Zeit einen Fragebogen mit Quotierung programmiert, der nun diese Woche bei einem Panel-Anbieter gestartet ist. Leider funktioniert die Quotierung nicht wie gewünscht und Teilnehmer werden abgewiesen, obwohl die Quoten nicht erfüllt sind. Ich kann mir nicht erklären woran das liegt. Ich hatte bei der Programmierung vor einigen Monaten an der Anleitung auf SoSciSurvey orientiert und auch die Tipps zur Fehlersuche durchprobiert. Dabei hatte ich keine Fehler gefunden. Aber offensichtlich hatte sich doch nochmal irgendwo etwas neu eingeschlichen oder ich habe etwas übersehen. Können Sie hier helfen?

Noch dazu haben wir den Fragebogen in zwei Sprachen erstellt, (allerdings als unterschiedliche Fragebögen mit zwei unterschiedlichen Links). In beiden Sprachen sollen jeweils diese Quoten erfüllt werden.

Hier die Syntax für den deutschen Fragebogen

//QuotaFull

$quota = [   
'1-1' => 30, // 30 Männer 50-59 --> 1. Zahl: Männer (1), Frauen (2), sonstiges (3)
'1-2' => 30, // 30 Männer 60-69 --> 2. Zahl: Altersgruppe 50-59 (1), Altersgruppe 60-69 (2)
'2-1' => 30, // 30 Frauen 50-59
'2-2' => 30, // 30 Frauen 60-69
'3-1' => 10, // 10 sonstige 50-59
'3-2' => 10, // 10 sonstige 60-69
];

//Geschlecht auslesen
$gender = value('SD03');

//Alter wird umkodiert
$age = value('SD01_01');

if ($age <= 59) {
  $ageGroup = 1;
} else {
  $ageGroup = 2;
} 


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

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


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


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


Auf der letzten Seite: 
//Complete Redirect Page 22 Bottom
//Geschlecht auslesen
$gender = value('SD03');

//Alter wird umkodiert
$age = value('SD01_01');

if ($age <= 59) {
  $ageGroup = 1;
} else {
  $ageGroup = 2;
} 

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

//Speichern der Gruppenzugehörigkeit in der internen Variable IV03_01
put('IV03_01', $demGroup);
put('IV03_02', $gender);
put('IV03_03', $ageGroup);

//Complete Redirect
redirect('https://gateway.gapfish.com/routings/%reference%/finish/completed');


Und hier für den englischen: 
//QuotaFull

$quota = [   
'1-1' => 30, // 30 Männer 50-59 --> 1. Zahl: Männer (1), Frauen (2), sonstiges (3)
'1-2' => 30, // 30 Männer 60-69 --> 2. Zahl: Altersgruppe 50-59 (1), Altersgruppe 60-69 (2)
'2-1' => 30, // 30 Frauen 50-59
'2-2' => 30, // 30 Frauen 60-69
'3-1' => 10, // 10 sonstige 50-59
'3-2' => 10, // 10 sonstige 60-69
];

//Geschlecht auslesen
$gender = value('SD03');

//Alter wird umkodiert
$age = value('SD01_01');

if ($age <= 59) {
  $ageGroup = 1;
} else {
  $ageGroup = 2;
} 


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

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


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


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

Auf der letzten Seite: 
//Complete Redirect Page 22 Bottom
//Geschlecht auslesen
$gender = value('SD03');

//Alter wird umkodiert
$age = value('SD01_01');

if ($age <= 59) {
  $ageGroup = 1;
} else {
  $ageGroup = 2;
} 

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

//Speichern der Gruppenzugehörigkeit in der internen Variable IV03_01
put('IV03_01', $demGroup);
put('IV03_02', $gender);
put('IV03_03', $ageGroup);

//Complete Redirect
redirect('https://gateway.gapfish.com/routings/%reference%/finish/completed');

Ich freue mich über jede Hilfe...

by SoSci Survey (309k points)
Wenn Sie die Daten abrufen und eine Häufigkeitstabelle für IV03_01 erstellen - also nur für die Fälle mit FINISHED=1 - was steht dort denn?

1 Answer

0 votes
by s109568 (170 points)

Das hatte ich heute auch schon überprüft. In der Kategorie 1-1 sind es 30, in 1-2 32 Personen, 2-1 42, 2-2 36 und 3-1 2. Das übertrifft ja aber teilweise auch die gesetzten Quoten für ein Land. Das ist vermutlich passiert, weil viele Personen aus dieser Quotengruppe den Fragebogen gleichzeitig ausgefüllt haben?

Ich vermute der Fehler ist, dass ich IV03_01 für die Quotierung für den deutschen UND den englischen Fragebogen verwende? Richtig wäre vermutlich andere interne Variablen für beide Fragebogenversionen zu verwenden, oder?

Jetzt ist der Fragebogen aber schon im Feld - wie kann ich das Problem am besten beheben? Muss ich für beide Länder neue (unterschiedliche!) interne Variablen für die Quotierung anlegen? Die neuen Quoten sollten dann natürlich unsere ursprüngliche Zielgröße (also 30 Personen pro Gruppe) minus die bereits erhobenen Personen in dieser Quote für jedes Land sein. Muss IV03_01 dann gelöscht/überschrieben werden? Hier sind die Quoten ja jetzt schon "voll"?

Oder steckt doch ein ganz anderes Problem dahinter?

by SoSci Survey (309k points)
> Das übertrifft ja aber teilweise auch die gesetzten Quoten für ein Land.
>
> Ich vermute der Fehler ist, dass ich IV03_01 für die Quotierung für den deutschen UND den englischen Fragebogen verwende?

Korrekt, ich sehe in Ihrem Code keinen Filter, der das Land irgendwie kontrollieren würde.

> wie kann ich das Problem am besten beheben?

Wenn Sie ab sofort einfach zwei separate interne Variablen verwenden und (!) die Quotierung so anpassen, dass diese nur noch die fehlenden Fälle einfordert (also z.B. 20 statt 30 Fälle, wenn Sie für ein Land schon 10 haben), dann sollten Sie am Ende die gewünschten Quoten bekommen.

$quota = [   
  '1-1' => 20,
  '1-2' => 17,
  ...

Pro-Tipp: Speichern Sie die ID zusätzlich auch noch in die alte Variable, damit Sie die Quote weiterhin einfach kontrollieren können:

put('IV03_01', $demGroup);  // Alt behalten
put('IV03_04', $demGroup);  // Neu ergänzen

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

...