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

Liebes Support Team,

ich habe den PHP Code versucht nach Ihrem Beispiel einzubauen. Allerdings bekomme ich es nicht hin, dass der Code zuverlässig die Vignetten anzeigt und die Randomisierung scheint nicht immer richtig zu funktionieren. Mein Fragebogen ist nun so aufgebaut:

01 Intro (für alle gleich)
02 Demografische Variablen mit der Variable DE10, wo Personen angeben, ob Sie zur älteren (value 3) oder jüngeren (value 1) Altersgruppe gehören. (für alle gleich)
03 Randomizer. Ich habe hier den Randomizer eingefügt und den PHP Code (für alle gleich)
04 TRs (Outcome für die same age condition)
05 TRy (Outcome für die young condition)
06 TRo (Outcome für die old condition)
07 BIs (Exploratives Outcome same age condition)
08 BIy (Exploratives Outcome für die young condition)
09 BIo (Exploratives Outcome für die old condition)
10 Manipulation check (für alle gleich)
end (für alle gleich)

Ich habe das so gemacht, damit ich die die nicht relevanten Seiten ganz leicht ausblenden kann basierend auf DE10 und dann keinen PHP Code mehr auf den individuellen Seiten brauche-zumindest hatte ich mir das so gedacht. Während das mit den Seiten so zu funktionieren scheint, wie ich mir das Gedacht habe, werden die Vignetten nicht angezeigt. Die habe ich auch nicht in den Fragebogen reingeschoben, sondern ich wollte das so machen, dass der PHP Code die Vignette quasi aufruft. Allerdings klappt das nicht, die Vignette wird manchmal nicht angezeigt und ich weiß nicht warum. Könnten Sie mir erklären, was an meinem Code für mein Vorhaben falsch ist und wie ich das beheben kann? Nicht wundern, ich habe auch versucht so Debug-Möglichkeiten einzubauen, damit ich den Fehler selbst finden kann, was aber nicht funktioniert hat. Die Vignetten sind die V00X Variablen im Code.

Das ist mein PHP Code, den ich nach dem Randomizer platziert habe:

// 1. Fetch age response
$age = value('DE10');

// Screen out ineligible participants (Category 2)
if ($age == 2) {
    goToPage('end');
}

// 2. Fetch randomizer value
$rnd = value('V001');

// 3. Conditional routing with explicit age validation
if ($rnd == 1) {
    // Professional | Same Age
    text('V002');
    setPageOrder('TRs', 'BIs', 'Friendship', 'end');

} elseif ($rnd == 2) {
    // Friendship | Same Age
    text('V003');
    setPageOrder('TRs', 'BIs', 'Friendship', 'end');

} elseif ($rnd == 3) {
    // Professional | Age Gap
    if ($age == 1) {
        // Younger Participant -> V004 & Younger Scales
        text('V004');
        setPageOrder('TRy', 'BIy', 'Friendship', 'end');
    } elseif ($age == 3) {
        // Older Participant -> V006 & Older Scales
        text('V006');
        setPageOrder('TRo', 'BIo', 'Friendship', 'end');
    } else {
        html('<p style="color:red; font-weight:bold;">Debug Error: DE10 value is invalid (Value: '.$age.'). Expected 1 or 3.</p>');
    }

} elseif ($rnd == 4) {
    // Friendship | Age Gap
    if ($age == 1) {
        // Younger Participant -> V005 & Younger Scales
        text('V005');
        setPageOrder('TRy', 'BIy', 'Friendship', 'end');
    } elseif ($age == 3) {
        // Older Participant -> V007 & Older Scales
        text('V007');
        setPageOrder('TRo', 'BIo', 'Friendship', 'end');
    } else {
        html('<p style="color:red; font-weight:bold;">Debug Error: DE10 value is invalid (Value: '.$age.'). Expected 1 or 3.</p>');
    }
}

Danke für Ihre Hilfe. Der Sosci survey support ist mit Abstand der beste Support, den ich bei Anbietern jemals hatte.

ago by SoSci Survey (377k points)
Spontan sehe ich keinen offensichtlichen Fehler. Die Vignetten sind die Texte V002 bis V007, ist das korrekt? Welche Codes gibt es denn im Zufallsgenerator? 1 bis 4 oder andere Codes?

Können Sie anhand der "Erhobenen Daten" nachvollziehen, in welchen Fällen keine Vignette angezeigt wurde? Welche Werte hatte dort DE10 und V001? Wenn Sie diese Werte kennen, können Sie dann das Problem durch mehrfachen Aufruf des Fragebogens (bis der Zufallsgenerator den richtigen Wert zieht) nachvollziehen? Was zeigt die Debug-Information in diesem Fall an?
ago by s295722 (140 points)
Die Vignetten sind V002 bis V007. Im Zufallsgenerator gibt es diese Zettel:

1 = Low Friendship same age
2 = High Friendship same age
3 = Low Friendship age gap (young)
4 = High Friendship age gap (young)
5 = Low Friendship age gap (old)
6 = High Friendship age gap (old)

Ich habe den Fragebogen einmal mit der Ausprägung DE10 = 3 gemacht, da wurde die Vignette angezeigt. Bei erneuter Testung mit DE10 = 1 wurde die Vignette nicht angezeigt und die Debug Information ziegt das:

[Information]    Interview Nummer 52 wird fortgesetzt
[Information]    Der Fragebogen Mainstudy im Projekt VignettenstudieFriendship wird verwendet
[Information]    Die Verweildauer auf Seite 2 war 12 Sekunden
[Verarbeitung]    Lese Antworten von Seite 2
[Information]    Antwort auf DE02 = 1
[Information]    Antwort auf DE03_01 = 18
[Information]    Antwort auf DE10 = 1
[Information]    Antwort auf DE04 = 1
[Information]    Antwort auf DE08 = 2
[Information]    Keine Antwort für DE08_18
[Information]    Antwort auf DE09 = 2
[Information]    Fragen bisher zu 75% vollständig beantwortet
[Verarbeitung]    Erstelle Seite 3 in Fragebogen Mainstudy
[Inhalt]    Erstelle Frage V001
[Information]    Vom Zufallsgenerator V001 wurden folgende Codes gezogen: 6
[Information]    value("DE10") = 1
[Information]    value("V001") = 6
[Information]    Die Seite zeigt keine Inhalte, automatisch weiter mit Seite Nr. 4
[Verarbeitung]    Erstelle Seite 4 in Fragebogen Mainstudy
[Inhalt]    Erstelle Frage TR11
[Inhalt]    Erstelle Frage TR12

Dass der Code 6 gezogen wird (also Vignette high friendship old) bei DE10 = 1 ist schonmal nicht richtig. Bei DE10 = 1 sollten nur die same age oder young Vignetten möglich sein. Komsicherweise wird dann TR11 und TR12 danach angezeigt, was die same age condition ist. Also passt hier passt die Vignette nicht zu DE10 und die Seitenabfolge danach passt auch nicht. Die Debug Information zeigt aber keinen Fehler, also als ob ich das so programmiert hätte - daher meine Annahme, dass mein PHP-Code fehlerhaft ist. Ich kann mir nicht erklären, warum das sonst so falsch ist.

Da ich die Studie gerade erst teste (zum Glück, sonst wäre jetzt alles falsch) habe ich keine erhobenen Daten. Ich teste den Fragebogen jedes Mal neu und manchmal ist die Ordnung korrekt, manchmal nicht, manchmal wird die Vignette angezeigt, manchmal nicht, manchmal kommt nur die same age condition, manchmal auch die anderen. Also ich erkenne wirklich überhaupt kein Muster und habe den Fragebogen schon an die 50 Mal getestet, weil ich den Fehler einfach nicht finde.

Wie würden Sie vorschlagen, dass ich weiter vorgehe? Können Sie ein Problem identifizieren? Muss ich vielleicht die Vignetten doch manuell in den Fragebogen auf die Seite ziehen? Ich habe überhaupt keine Idee mehr, was ich noch versuchen kann oder wo das Problem überhaupt liegt.

1 Answer

0 votes
ago by SoSci Survey (377k points)

Im Zufallsgenerator gibt es diese Zettel

Danke, ich denke, das ist der Knackpunkt.

Der Zufallsgenerator kann die Codes 1-6 ziehen, aber Ihr IF-Filter endet bei dieser Bedingung

} elseif ($rnd == 4)

Das heißt, wenn 5 oder 6 gezogen wird, dann wird keiner der IF-Zweige aktiv, und es wird nichts angezeigt.

Wenn ich Ihren Code korrekt lese, müsste der Zufallsgenerator folgende Zettel enthalten:

1 = Low Friendship same age
2 = High Friendship same age
3 = Low Friendship age gap
4 = High Friendship age gap

Das young/old ergibt sich aus der Antwort auf DE10 und ist nicht Teil der Randomisierung. Das Alter entscheidet nur darüber, welche Vignette für "age gap" verwendet wird.

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

...