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

0 votes

Hallo,

bei meiner Onlinestudie für meine Bachelorarbeit werden den Teilnehmern randomisiert nacheinander sieben Bilder zugeordnet, die sie jeweils bewerten sollen.

Ich habe bei den Fragen bei jeder Frage angegeben, dass sie beantwortet werden muss. Wenn ich aber beim Testdurchgang kein Items beantworte und auf weiter klicke, erscheint eine neue Frage und ein neues Bild. So kann man sich ohne Antworten zu geben durch die ganze Studie klicken.

Die dazugehörige Debug-Information:

[Information]	In der Frage FR01 fehlt eine erforderliche Antwort
[Information]	Fragen bisher zu 0% vollständig beantwortet
[Information]	Es fehlen notwendige Antworten, die Seite wird wiederholt

Ich habe schon versucht "if (!isset($question)) {" und "registerVariable($question);
}" einzubauen aber es gelingt mir leider nicht richtig.

Hier mein PHP code, der auf jeder Seite (mit hochzählendem 'XV0....' ) steht, damit das Bild und die zugehörige Frage angezeigt wird:

// Draw a number from the urn to get a new image
urnDraw($urn_name, 'XV01', 'man');

$key = value('XV01_01');

if (in_array($key, $drawn_values)) {
    $loop = 1;
    while ($loop) {
        // create random number (rand does not work in sosci)
        $random_array = range(1, 294);
        shuffle($random_array);
        $rand = $random_array[0];
        if (in_array($rand, $drawn_values))
            $loop = 1;
        else {
            $loop = 0;
            $key = $rand;
        }
    }
}
else {
    urnPutAway('XV01');
}
$drawn_values[] = $key;

$values = dbGet($key);


// Show image according to value[1] (image file name)
html('<div style="text-align: center"><img src="'.$values[1].'"></div>'); // Display picture
html('<br>');
html('<br>');

$question = $values[0] . '01'; // Build question identifier
question($question, array_slice($index_map,0,13)); // Display questions (first 13)

// Show image according to value[1] (image file name)
html('<div style="text-align: center"><img src="'.$values[1].'"></div>'); // Display picture
html('<br>');
html('<br>');

question($question, array_slice($index_map,13,13)); // Display questions (second 13)

// Show image according to value[1] (image file name)
html('<div style="text-align: center"><img src="'.$values[1].'"></div>'); // Display picture
html('<br>');
html('<br>');

// Add +1 to value[2] (draw counter) and store in database
$values[2] = 0;
$values[2] = $values[2] + 1 ; 

// Store rater code
$rater_code = value('XS06_01');
$values[] = $rater_code;

// Store new values into database (is this necessary?)
dbSet($key, $values);

Ich würde mich sehr über Hilfe freuen!
Liebe Grüße

in SoSci Survey (dt.) by s115911 (110 points)
edited by SoSci Survey
Ich habe den PHP-Code in Ihrer Frage einmal mit dem Knopf {} als Code formatiert.
vielen Dank!

1 Answer

0 votes

Es wäre hilfreich, wenn Sie kurz das Ziel schildern, das Sie mit Ihrem PHP-Code verfolgen. Für micht siet es so aus, dass Sie aus einer Urne Werte ziehen - und andere Werte verwenden, wenn der gezogene bereits auf einer Liste steht. Womöglich wäre dies mit einem Zufallsgenerator deutlich einfacher zu realisieren.

Wenn ich aber beim Testdurchgang kein Items beantworte und auf weiter klicke, erscheint eine neue Frage

Hochstwahrscheinlich liegt es daran, dass Ihr PHP-Code bei jedem Aufruf der Seite zufällig eine andere Frage bestimmt, die angezeigt werden soll. Die Seite wird also korrekt wiederholt - aber Ihre PHP-Code zeigt bei der Wiederholung eine andere Frage.

by SoSci Survey (106k points)
Das Problem ist, dass ich das Studiendesign und den PHP Code nicht groß ändern sollte. Meine Studie baut auf einer anderen Studie auf, die diesen Code so bereits schon erfolgreich verwendet hat. Ich bin mir leider auch nicht sicher, ob ich den Code selbst schon ganz verstanden habe.

Ich habe jetzt zwei verschiedene Onlinestudien erstellt, für die die Teilnehmer in drei Gruppen unterteilt werden:
1.  Olinestudie für Expert*innen (mit Manual), denen ich den Link für die Studie zusende.
2.  Onlinestudie ist für Nichtexpert*innen, die randomisiert in die Bedingung "mit Manual" (bei den Fragen sieht man Erklärungen zu sehr spezifischen Begriffen) und "ohne Manual" eingeteilt werden.

Für die zweite Studie habe ich den Code nochmal etwas verändert:
 { // Draw a number from the urn to get a new image
if (value('ZZ01') == 1) {
  urnDraw($urn_name, 'XV01', 'man');  // Urne Bilder mit Fragen ohne Manual
} elseif (value('ZZ01')==2)  {
  urnDraw($urn_name2, 'XV01', 'man');  // Urne Bilder mit Fragen mit Manual
}


urnDraw($urn_name, 'XV01', 'man');

$key = value('XV01_01');


if (in_array($key, $drawn_values)) {
    $loop = 1;
    while ($loop) {
        // create random number (rand does not work in sosci)

        $random_array = range(1, 294);
        shuffle($random_array)[0];
        $rand = $random_array[0];
        if (in_array($rand, $drawn_values))
            $loop = 1;
        else {
            $loop = 0;
            $key = $rand;
 
            }
        }
    }
else {
    urnPutAway('XV01');
}
$drawn_values[] = $key;

$values = dbGet($key);


// Show image according to value[1] (image file name)
html('<div style="text-align: center"><img src="'.$values[1].'"></div>'); // Display picture
html('<br>');
html('<br>');

$question = $values[0] . '01'; // Build question identifier
question($question, array_slice($index_map,0,13)); // Display questions (first 13)

// Show image according to value[1] (image file name)
html('<div style="text-align: center"><img src="'.$values[1].'"></div>'); // Display picture
html('<br>');
html('<br>');

question($question, array_slice($index_map,13,13)); // Display questions (second 13)

// Show image according to value[1] (image file name)
html('<div style="text-align: center"><img src="'.$values[1].'"></div>'); // Display picture
html('<br>');
html('<br>');



// Add +1 to value[2] (draw counter) and store in database
$values[2] = $values[2] + 1;

// Store rater code
$rater_code = value('XS06_01');
$values[] = $rater_code;

// Store new values into database (is this necessary?)
dbSet($key, $values);}

Hier teilt ein Zufallsgenerator die Teilnehmer in zwei Gruppen ein, die die zu bewertenden Bildern aus zwei unterschiedlichen Urnen ziehen.
Die eine Urne besitzt Zettel mit den Zahlen 1-294 und die andere Zahlen von 1001-1294. Die Zahlen sind so sozusagen noch den gleichen Bildern zugeordnet, nur die Frage ist unterschiedlich (Ohne Manual: AA-LH  und mit Manual: MA- XH bzw. YH weil schon mehrere Kennungen mit X vergeben waren). Die zugehörigen Bildkennungen, Fragen und Zahlen sind in einer hochgeladenen Datenbank gespeichert.

Die Studie hat eigentlich noch eine vierte Gruppe (Expert*innen ohne Manual). Die Daten von ihnen wurden in der vorherigen Studie mit dem PHP Code aber schon erhoben und sollen in diese mit einfließen. Daher versuche ich jetzt so wenig, wie möglich zu ändern, damit ich am Ende keine Probleme bei den statistischen Auswertungen kriege.

Jetzt funktioniert auch endlich alles, außer halt die Antwortprüfung.

Die lange Ausführung tut mir Leid.
Ich hoffe, ich konnte mein Problem irgendwie erklären.
> Das Problem ist, dass ich das Studiendesign und den PHP Code nicht groß ändern sollte.

Nun ja, der Code ist nunmal falsch, wie es aussieht.

> ... die die zu bewertenden Bildern aus zwei unterschiedlichen Urnen ziehen.

Auch dafür würde ich im vorliegenden Fall Zufallsgenerator-Fragen empfehlen.

Der PHP-Code verwendet eine Variable $drawn_values - und nachdem diese hier im Code nicht definiert wird, vermute ich, dass sie bereits auf einer früheren Seite definiert wurde. Meine Vermutung ist, dass dieses ganze Gebastel unnötig wäre, wenn man auch für die Ziehung der Bilder Zufallsgenerator-Fragen verwenden würde (diese Möglichkeit gibt es erst seit ein paar Jahren, evtl. wurde der PHP-Code früher geschrieben).
Ja, dieser PHP Code steht auf der vorherigen Seite:

{// Randomize item order for the questions for current participant
$index_map = array('01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23', '24', '25', '26');
shuffle($index_map);
registerVariable('index_map');

// Randomize if the same gets drawn twice from the urn (happens very rarely)
$drawn_values = array();
registerVariable('drawn_values');

// Name of the urn
//$urn_name = 'kleine_urne';
$urn_name = 'numbers_of_images';
registerVariable('urn_name');}

Ich werde jetzt versuchen die Urnen mit Zufallsgenerator- Fragen zu ersetzen, wenn es nicht anders geht. Vielen Dank für die Hilfe!
Es geht immer auch anders - aber meine qualifizierte Prognose ist, dass es dadurch eher komplizierter wird.

Der Zufallsgenerator hat große Mengen dieser Komplexität bereits im internen Programmcode verarbeitet, sodass Sie sich nicht mehr darum kümmern müssen. Wenn Sie unbedingt möchten, können Sie mit weiteren Variablen und einer Verfolgung der Teilnehmer-Bewegung mittels getRoute() sicher auch auf anderem Weg zum gewünschten Ergebnis kommen.
...