0 votes
in SoSci Survey (dt.) by s109802 (140 points)
edited by SoSci Survey

Guten Abend, wie kann ich eine Blockrandomisierung bei zwei Altersgruppen (20-35 Jahre und 65 Jahre und älter) einstellen?
Bisher habe ich die Gruppen definiert und sie den zwei Zufallsgeneratoren zugeordnet, die dann zu einem von drei Blöcken randomisiert weiterleiten:

$age = value('EF03_01');
if ($age >= 20 && $age <= 35) {     $group = 1;
} elseif ($age >= 65) {     $group = 2;
} elseif ($age >= 36 && $age <= 64) {     
$group = 3;
}

if (value('EF03_01') == 1) {
  show('SZ22');
} elseif (value('EF03_01') == 2) {
  show('SZ23');
} elseif (value('EF03_01') == 3) {
  text('screenout');
  buttonHide();
  setPageOrder($gesamtliste, 'posttest');
}

Ich brauche eigentlich nur Gruppe 1 (20-35 Jahre) und Gruppe 2 (>= 65 Jahre). Gruppe 3 würde ich gern direkt zum Ende des Fragebogens leiten.
Entferne ich laut SoSci-Anleitung alle Zufallsgeneratoren aus dem Fragebogen, wird jede Seite des gesamten Fragebogens angezeigt und nichts mehr randomisiert. Dann diese Meldung: „Die Variable SZ22 wurde im Laufe dieses Interviews auf keiner vorhergehenden Seite abgefragt. Daher kann die Funktion value() keinen Antwort-Wert ermitteln.“

Und dieser Hinweis:
Im PHP-Code trat ein Fehler auf.

Fehler im Fragebogen: Undefined array key ""
    Zeile: 16
PHP-Code
013   3 => ['ISZ5', 'ISZ6', 'ISZ7', 'ISZ8', 'ISZ9']
014 ];
015 
016 $gesamtliste = $blocks[$blocknummer];
017 
018  
019 if (isset($additionalPages[$blocknummer])) {

Vermutlich aufgrund des Codes unten, der auf der Seite geblieben ist, von der die Zufallsgeneratoren entfernt wurden (eine Seite nach Altersabfrage). Welche Blocknummer muss ich definieren? Und sitzt der Code an der richtigen Stelle im Fragebogen?

$blocknummer = value('SZ22');
$blocks = [
  1 => valueList('SZ19', null, 'label'),
  2 => valueList('SZ20', null, 'label'),
  3 => valueList('SZ21', null, 'label')
];
// Definieren Sie die zusätzlichen Seiten für jeden Block
$additionalPages = [
  1 => ['SSZ5', 'SSZ6', 'SSZ7', 'SSZ8', 'SSZ9'],
  2 => ['KSZ5', 'KSZ6', 'KSZ7', 'KSZ8', 'KSZ9'],
  3 => ['ISZ5', 'ISZ6', 'ISZ7', 'ISZ8', 'ISZ9']
];

$gesamtliste = $blocks['blocknummer'];

if (isset($additionalPages[$blocknummer])) {
  $additionalPagesForBlock = $additionalPages[$blocknummer];
  $gesamtliste = array_merge($gesamtliste, $additionalPagesForBlock);
}

setPageOrder($gesamtliste, 'posttest');

1 Answer

0 votes
by SoSci Survey (327k points)

Undefined array key ""
 Zeile: 16

Damit will PHP sagen: Sie versuchen $blocks[""] auszulesen. Aber das gibt es natürlich nicht. Das Problem scheint hier also zu sein, dass die Variable $blocknummer nur einen leeren String enthält.

Entferne ich laut SoSci-Anleitung alle Zufallsgeneratoren aus dem Fragebogen

... eben weil der Zufallsgenerator feht. Nun stellt sich mir die Frage, weshalb Sie die Zufallsgeneratoren entfernt haben? Das scheint mir ein Missverständnis zu sein. Bei einer Block-Randomisierung brauchen Sie ja eigentlich mehr (!) und nicht weniger Zufallsgeneratoren.

Technisch funktioniert die Block-Randomisierung nur so, dass SIe je nach Block-Zugehörigkeit einen anderen Zufallsgenerator verwenden, und dessen Ziehung dann am besten in eine interne Variable kopieren, die Sie dann im IF-Filter verwenden.

Können Sie nochmal in der Anleitung nachsehen, wie es zu dem Missverständnis kam? Dann können wir das besser formulieren, sodass anderen nicht mehr darüber stolpern. Danke.

by s109802 (140 points)
Dann habe ich die Anleitung zum Thema Block-Randomisierung wohl missverstanden, unter „Einbindung des Zufallsgenerators“: „Wichtig: Platzieren Sie keinen Ihrer Zufallsgeneratoren im Fragebogen. Falls Sie schon einen Zufallsgenerator in den Fragebogen gezogen haben, dann entfernen Sie diesen unter Fragebogen zusammenstellen bitte wieder von der entsprechenden Fragebogen-Seite.“

Mit den Zufallsgeneratoren wieder eingefügt funktioniert alles auch wieder, nur dass die Zählung der gezogenen Gruppe in SZ22 und auch SZ23 vermerkt wird. In SZ22 wird die Ziehung in der richtigen Gruppe gezählt, in SZ23 immer in einer falschen. Abgesehen davon, dass unterschiedliche Altersangaben bisher noch gar nichts bewirken, also scheint mein IF-Filter für $age noch nicht zu stimmen. Den habe ich ja siehe oben auf Seite 2 im Fragebogen und auf Seite drei habe ich fünf Zufallsgeneratoren (SZ19-SZ23) und den PHP Code siehe oben.
Die Debug-Info ist diese:
[Verarbeitung]    Lese Antworten von Seite 2
[Information]    Antwort auf EF03_01 = 22
[Information]    Antwort auf EF04 = 2
[Information]    Keine Antwort für EF04_08
[Information]    Antwort auf EF05 = 7
[Information]    Keine Antwort für EF05_04
[Information]    Fragen bisher zu 100% vollständig beantwortet
[Verarbeitung]    Erstelle Seite 3 in Fragebogen qnr2
[Inhalt]    Erstelle Frage SZ22
[Information]    Vom Zufallsgenerator SZ22 wurden folgende Codes gezogen: 2
[Inhalt]    Erstelle Frage SZ23
[Information]    Vom Zufallsgenerator SZ23 wurden folgende Codes gezogen: 3
[Inhalt]    Erstelle Frage SZ19
[Information]    Vom Zufallsgenerator SZ19 wurden folgende Codes gezogen: 2, 3, 4, 1
[Inhalt]    Erstelle Frage SZ20
[Information]    Vom Zufallsgenerator SZ20 wurden folgende Codes gezogen: 2, 4, 3, 1
[Inhalt]    Erstelle Frage SZ21
[Information]    Vom Zufallsgenerator SZ21 wurden folgende Codes gezogen: 1, 2, 4, 3
[Information]    value("SZ22") = 2
[Information]    Entsprechend setPageOrder() werden nun folgende Seiten gezeigt:
14 [KSZ2], 16 [KSZ4], 15 [KSZ3], 13 [KSZ1], 17 [KSZ5], 18 [KSZ6], 19 [KSZ7], 20 [KSZ8], 21 [KSZ9], 31 [posttest]
[Information]    Die Seite zeigt keine Inhalte, automatisch weiter mit Seite Nr. 14
[Verarbeitung]    Erstelle Seite 14 in Fragebogen qnr2
[Inhalt]    Erstelle Frage SZ03
[Inhalt]    Erstelle Frage SZ10
[Inhalt]    Erstelle Frage FR02
by SoSci Survey (327k points)
> Mit den Zufallsgeneratoren wieder eingefügt

Wichtig ist, dass die Zufallsgeneratoren nicht per Drag&Drop in die Fragebogen-Seite gezogen werden, sondern dass sie "nur" im Fragenkatalog vorhanden sind und "nur" per question() oder show() via PHP-Code eingebunden werden.

Danke für den Hinweis, dass es in der Anleitung ein wenig missverständlich war. Wir haben dies genauer formuliert.
by s109802 (140 points)
Dann gab es ein Missverständnis, denn die Zufallsgeneratoren hatte ich nicht komplett gelöscht, sondern nur aus der Fragebogenseite entfernt. Das löst aber die Fehlermeldung aus: Undefined array key ""
 Zeile: 16
016 $gesamtliste = $blocks[$blocknummer];    

Was meinen Sie damit, dass die Variable $blocknummer nur einen leeren String enthält? Bei mir ist sie doch definiert als $blocknummer = value('SZ22');
Außerdem kommt diese Fehlermeldung: „Die Variable SZ22 wurde im Laufe dieses Interviews auf keiner vorhergehenden Seite abgefragt. Daher kann die Funktion value() keinen Antwort-Wert ermitteln.“
Was muss ich bei $blocknummer schreiben, damit SZ22 und SZ23 beide eingebunden sind? Mit meinen Versuchen kommen außerdem die zwei Fehlermeldungen wie eben beschrieben für SZ23.
by SoSci Survey (327k points)
> die Zufallsgeneratoren hatte ich nicht komplett gelöscht, sondern nur aus der Fragebogenseite entfernt.

So weit so gut. Jetzt brauchen Sie den PHP-Code, welche je nach Block den richtigen Zufallsgenerator einbindet. Möchten sie den aktuellen Code mal in einer neuen Frage posten? Dann sehen wir uns das zusammen an. Im alten Code war der Block durch die Variable $ageGroup definiert.

> Was muss ich bei $blocknummer schreiben, damit SZ22 und SZ23 beide eingebunden sind?

Es dürfen ja grade nicht (!) beide Zufallsgeneratoren eingebunden werden, sonst funktioniert das mit der Gleichverteilung pro Block ja nicht.

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

...