Kapitel 12. Quoten

Inhaltsverzeichnis

Quotenvariablen
Quotengruppen
Quoten und Zugriffsrechte

Quotenvariablen

Ein wichtiges Element beim Durchführen von Studien ist die Kontrolle der Quotenvorgaben.

Bei Quotenvariablen in Q. handelt es sich um Interview-übergreifende Zähler mit Sollwerten. Sie werden implizit beim Erfüllen einer bestimmten Bedingungen am Ende jedes Interviews oder explizit hochgezählt. Zu beachten ist, dass die quotaWriteCondition (siehe „Skriptparameter“ grundsätzlich regelt, ob ein Interview überhaupt Einfluss auf die Quotenzählung haben soll. Auf diese Weise lässt sich beispielweise der Testmodus oder eine verwendete Teilnehmer-Test-ID von der Quotenzählung ausschließen.

Eine Quotenvariable besteht aus mehreren Bestandteilen:

  • Name

  • Bedingung, ob sie nach Beendigung eines Interviews hochgezählt wird

  • Ist-Zählerstand

  • Soll-Zählerstand

Die Syntax zur Definition eine Quotenvariablen im Skript ist:

      quotaVar NAME=BEDINGUNG;
    
quotaVar geschlecht_m = geschl eq 1;
quotaVar geschlecht_w = geschl eq 2;
    

Die Ist- und Soll-Zählerstände sind hier noch nicht enthalten. Da Quotenstände Interview-übergreifend sind, werden sie in der Datei quotavars.lst gespeichert, die sich im Studienverzeichnis befinden muss. Dort aufgeführte Quoten müssen im Skript definiert sein und umgekehrt. Für das angeführte Beispiel sähe die Datei z.B. wie folgt aus:

geschlecht_m 0 100
geschlecht_w 31 100
    

Bei dieser Konstellation wurde die Frauenquote bereits 31 mal gezählt, während die Männerquote bislang unangetastet blieb.

Um im Skript mit den Informationen einer Quotenvariable arbeiten zu können, gibt es 3 verschiedene Selektoren:

      QUOTAVAR           Ist-Stand der Quote (ohne Berücksichtigung des akt. Interviews)
      current(QUOTAVAR)  Ist-Stand der Quote (mit ...                                  )
      target(QUOTAVAR)   Soll-Stand der Quote
    

Die reine Definition der Quote führt lediglich zu einem Zählerverhalten der Quote. Sie würde auch über den Sollwert hinaus immer weiter zählen. Abbrüche oder sonstige Aktionen aufgrund der Quotenstände müssen im Skript explizit definiert werden. Beispielhaft sähe ein quotenbedingter Abbruch des Interviews im Skript folgendermaßen aus:

quotaVar geschlecht_m = geschl eq 1;
quotaVar geschlecht_w = geschl eq 2;
  
SingleQ geschl;
text="Geschlecht";
labels=
1 "männlich"
2 "weiblich"
;
if(geschl eq 1) assert (geschlecht_m lt target(geschlecht_m)) "zu viele M" exit 2;
if(geschl eq 2) assert (geschlecht_w lt target(geschlecht_w)) "zu viele W" exit 2;
    

Für die Bedeutung des assert sei auf „Plausibilitätsbedingungen (assert)“ verwiesen.

Wer kein implizites Zählverhalten der Quote nutzen möchte, kann Quotenvariablen auch mit einer in jedem Fall ungültigen Bedingung definieren und mit dem Actionbefehl incQuota(QUOTAVAR) manuell hochzählen. Auch wenn es Kapitel 14, Action-Befehle und -Blöcke etwas vorausgreift, wäre für das o.a. Beispiel gleichbedeutend:

quotaVar geschlecht_m = 1 eq 2;
quotaVar geschlecht_w = 1 eq 2;

SingleQ geschl;
text="Geschlecht";
labels=
1 "männlich"
2 "weiblich"
;
if(geschl eq 1) assert (geschlecht_m lt target(geschlecht_m)) "zu viele M" exit 2;
if(geschl eq 2) assert (geschlecht_w lt target(geschlecht_w)) "zu viele W" exit 2;

cmplActionBlock = {
  if(_finished eq 1){
    if(geschl eq 1){ incQuota(geschlecht_m) };
    if(geschl eq 2){ incQuota(geschlecht_w) };
  };
};
    

Quotengruppen

Mehrere einzelne Quotenvariablen bilden oft logisch zusammenhängende Einheiten (wie in dem Beispiel mit M/W). Deshalb ist es sinnvoll (und in zukünftigen Q.-Versionen auch notwendig), sie zu Gruppen zusammenzufassen. Um mehrere Quotenvariablen zu einer Gruppe zusammenzufassen, muss man vor der Definition der Variablen das Statement

      QuotaGroup <name>
    

angeben, und dahinter

      QuotaGroup end;
    

Eine QuotaGroup kann direkt in einer Bedingung benutzt werden. Sie liefert den Wert true, wenn das aktuelle Interview in die Quotengruppen »passt«. »Passen« heißt: alle enthaltenen QuotaVars, deren Bedingungen beim aktuellen Interview zutreffen, haben einen niedrigeren Ist- als Soll-Zählerstand.

Beispiel:

QuotaGroup qgr_geschl begin;

quotaVar geschl_m=geschlecht eq 1;
quotaVar geschl_w=geschlecht eq 2;

QuotaGroup end;

SingleQ geschlecht;
text="Geschlecht";
labels=
1 "männlich"
2 "weiblich"
;
assert qgr_geschl "Bereits genug Interviews mit diesem Geschlecht!" exit;
    

Alternativ kann man die einzelnen Variablen auch direkt bei der QuotaGroup-Definition angeben:

QuotaGroup qgr_geschl=(geschl_m geschl_w);
    

Quoten und Zugriffsrechte

Über die Web-Oberfläche (s. „Quoten“) können Quotenstände kontrolliert und die Vorgaben angepasst werden. Gekoppelt ist der Zugriff auf diesen Menü-Eintrag an Zugriffsrechte und jede einzelne Quote kann für ein Nutzerkonto sichtbar gemacht oder ausgeblendet werden.

Momentan kann die Zuggriffskontrolle durch zwei verschiedene Mechanismen erreicht werden (in absehbarer Zeit stehen hier Veränderungen an). Der jüngere Mechanismus ordnet in einer json-Datei einer User-ID alle Quoten zu, auf die dieses Konto zugreifen darf. Damit Q. die Datei berücksichtigt, muss sie unter dem Namen quotafilter.json im Studienverzeichnis liegen.

[
  {
    "userid": "user1",
    "quotavars": [
      "gesamt",
      "q2",
      "q4"
    ]
  },
  {
    "userid": "user2",
    "quotavars": [
      "gesamt"
    ]
  }
]
    

Bei einem älteren Mechanismus wertet Q. eine Datei namens qsr.lst im Studienverzeichnis aus. Die Datei ordnet zeilenweise jeder Quote durch Leerzeichen getrennte User-IDs zu. Auf die jeweilige Quote können dann nur die aufgeführten Nutzer zugreifen, egal welche Nutzerrechte den Konten zugeordnet wurden.

quote1 user1 user2 user3 user4