0 votes
in SoSci Survey (dt.) by s085799 (120 points)

Hallo zusammen,

wie kann ich die Beantwortung einer Aufgabe mit grafischer Positionierung auswerten?

Bei einer Mehrfachauswahl löse ich dies bisher so:

$fragen = array(
  'A101_01' => 2,  
  'A101_02' => 2,  
  'A101_03' => 2,  
  'A101_04' => 2,   
);
 
$points = 0;
 
foreach ($fragen as $variable=>$correct)
{
  $answer = value($variable);

  if ($answer == $correct)
  {
    $points++;
  }
}

Kann ich diesen Code auch für die grafische Positionierung verwenden?
Welche Variablen muss ich dabei verwenden?

Vielen Dank

by SoSci Survey (302k points)
Das kommt vor allem darauf an, was Sie auswerten möchten. In der Variablen-Übersicht finden Sie (Zähl-)Variablen für die Markierungen pro Bereich sowie eine Variable, welche die exakten Positionen kodiert.
by s085799 (120 points)
Beispiel: Ein Bild zeigt Gegenstände in unterschiedlichen Farben. Nun sollen die Farbnamen korrekt zugeordnet werden. Also der Marker für Blau soll auf den blauen Gegenstand gesetzt werden usw. Die Bereiche (Gegenstände) im Bild habe ich als Rechtecke (rect x1/y1 x2/y2) festgelegt.

Ich möchte danach auswerten, ob alle Marker richtig gesetzt wurden, also ob z. B. der Marker für Blau auf den blauen Gegenstand (bzw. im entsprechenden Bereich) gesetzt wurde. Ich habe bereits mehrere Möglichkeiten ausprobiert, finde aber nicht die richtige Lösung. Ich bekomme immer die Rückmeldung, dass 0 richtige Antworten gegeben wurden, selbst wenn ich die Aufgabe korrekt löse.

1 Answer

0 votes
by SoSci Survey (302k points)

Bitte kontrollieren Sie als erstes in der Variablen-Übersicht, welche Treffer Sie zählen möchten. Das könnte z.B. DT64_01x02 für die blaube Markierung im Bereich "blau" sein und DT64_02x03 für die rote Markierung in Bereich "rot".

Dann summieren Sie diese Werte einfach auf. Die Funktino valueSum() erspart hier die FOR-Schleife.

$treffer = array(
  'DT64_01x02',
  'DT64_02x03'
);
$points = valueSum($treffer);
by s085799 (120 points)
Vielen Dank für den Tipp, wie man die FOR-Schleife umgehen kann, ich werde das gerne so umsetzen.

Leider habe ich immer noch das Problem, nicht die richtigen Variablen zu verwenden. Ich kopiere hier nun einmal direkt aus der eigentlichen Umfrage. Es geht dabei darum, die Textstellen zu markieren, die von einem, zwei oder mehr Autoren verfasst wurden.

Als Variablen werden mir hier angegeben (nicht vollständig, insgesamt handelt es sich um 6 unterschiedliche Bereiche/Markierungen):

A109_pts Markierungen (Positionen x1,y1,m1 x2,y2,m2 ...)
A109_rgs Bereiche der Markierungen
Text/Zeichenkette
A109_01 Text stammt von einem Autor (Anzahl insgesamt)
A109_01x01 Text stammt von einem Autor in 1 (Anzahl pro Bereich)
A109_01x02 Text stammt von einem Autor in 2 (Anzahl pro Bereich)
A109_01x03 Text stammt von einem Autor in 3-5 (Anzahl pro Bereich)
A109_01x04 Text stammt von einem Autor in 6 (Anzahl pro Bereich)
A109_01x05 Text stammt von einem Autor in GmA (Anzahl pro Bereich)
A109_01x06 Text stammt von einem Autor in GoA (Anzahl pro Bereich)
A109_02 Text stammt von zwei Autoren (Anzahl insgesamt)
A109_02x01 Text stammt von zwei Autoren in 1 (Anzahl pro Bereich)
A109_02x02 Text stammt von zwei Autoren in 2 (Anzahl pro Bereich)
A109_02x03 Text stammt von zwei Autoren in 3-5 (Anzahl pro Bereich)
A109_02x04 Text stammt von zwei Autoren in 6 (Anzahl pro Bereich)
A109_02x05 Text stammt von zwei Autoren in GmA (Anzahl pro Bereich)
A109_02x06 Text stammt von zwei Autoren in GoA (Anzahl pro Bereich)

Wenn ich nun beispielsweise dies für die Auswertung eintrage:
$treffer= array(
  'A109_01x01 Text stammt von einem Autor',
);
 
$points = valueSum($treffer);

erhalte ich folgende Fehlermeldung:

"Fehler im Fragebogen (Seite 19)
Es gibt keine Variable mit der Kennung A109_01x01 Text stammt von einem Autor, wie sie in der Funktion valueSum() verwendet wurde."

Was mache ich falsch?

Zur Erläuterung: Die Variablen sind jeweils bis einschließlich "Autor" fett gedruckt, so dass ich davon ausgehe, dass der Satzteil ab "in 1" nicht zur Variablen gehört.
by SoSci Survey (302k points)
Bitte verwenden Sie nur die Variablen-Namen (ohne Label):

$treffer= array(
  'A109_01x01',
  'A109_02x02'
);
by s085799 (120 points)
Auch diese Variante hatte ich bereits versucht:

$treffer= array(
  'A109_01x01'
);
 
$points = valueSum($treffer);

Fehlermeldung:
"Fehler im Fragebogen (Seite 19)
Es gibt keine Variable mit der Kennung A109_01x01, wie sie in der Funktion valueSum() verwendet wurde."
by SoSci Survey (302k points)
Könnten Sie einmal die vollständige Debug-Information posten, die auf der Seite nach der "grafischen Positionierung" angezeigt wird (also nach dem "Weiter")?
by s085799 (120 points)
[Information]    Interview Nummer 295 wird fortgesetzt
[Information]    Der Fragebogen Alpha_1 im Projekt tutorial123484 wird verwendet
[Verarbeitung]    Lese Antworten von Seite 18
[Information]    Die Verweildauer auf Seite 18 war 10 Sekunden
[Information]    Antwort auf A109_pts = 471,106,1 481,168,2 476,234,3 485,298,4 480,367,5 478,432,6
[Information]    Antwort auf A109_rgs = 1 2 3 4 5 6
[Information]    Antwort auf A109_01 = 1
[Information]    Antwort auf A109_01x01 = 1
[Information]    Antwort auf A109_01x02 = 0
[Information]    Antwort auf A109_01x03 = 0
[Information]    Antwort auf A109_01x04 = 0
[Information]    Antwort auf A109_01x05 = 0
[Information]    Antwort auf A109_01x06 = 0
[Information]    Antwort auf A109_02 = 1
[Information]    Antwort auf A109_02x01 = 0
[Information]    Antwort auf A109_02x02 = 1
[Information]    Antwort auf A109_02x03 = 0
[Information]    Antwort auf A109_02x04 = 0
[Information]    Antwort auf A109_02x05 = 0
[Information]    Antwort auf A109_02x06 = 0
[Information]    Antwort auf A109_03 = 1
[Information]    Antwort auf A109_03x01 = 0
[Information]    Antwort auf A109_03x02 = 0
[Information]    Antwort auf A109_03x03 = 1
[Information]    Antwort auf A109_03x04 = 0
[Information]    Antwort auf A109_03x05 = 0
[Information]    Antwort auf A109_03x06 = 0
[Information]    Antwort auf A109_04 = 1
[Information]    Antwort auf A109_04x01 = 0
[Information]    Antwort auf A109_04x02 = 0
[Information]    Antwort auf A109_04x03 = 0
[Information]    Antwort auf A109_04x04 = 1
[Information]    Antwort auf A109_04x05 = 0
[Information]    Antwort auf A109_04x06 = 0
[Information]    Antwort auf A109_05 = 1
[Information]    Antwort auf A109_05x01 = 0
[Information]    Antwort auf A109_05x02 = 0
[Information]    Antwort auf A109_05x03 = 0
[Information]    Antwort auf A109_05x04 = 0
[Information]    Antwort auf A109_05x05 = 1
[Information]    Antwort auf A109_05x06 = 0
[Information]    Antwort auf A109_06 = 1
[Information]    Antwort auf A109_06x01 = 0
[Information]    Antwort auf A109_06x02 = 0
[Information]    Antwort auf A109_06x03 = 0
[Information]    Antwort auf A109_06x04 = 0
[Information]    Antwort auf A109_06x05 = 0
[Information]    Antwort auf A109_06x06 = 1
[Information]    Fragen bisher zu 100% vollständig beantwortet
[Verarbeitung]    Erstelle Fragebogen-Seite Nr. 19
by s085799 (120 points)
Es funktioniert jetzt, ich habe es nun so gemacht:

$treffer= array(
  'A109_01x01' => 1,
  'A109_02x02' => 1,
  'A109_03x03' => 1,
  'A109_04x04' => 1,
  'A109_05x05' => 1,
  'A109_06x06' => 1,

);
 
$points = 0;
 
foreach ($treffer as $variable=>$correct)
{
  $answer = value($variable);

  if ($answer == $correct)
  {
    $points++;
  }
}

Nochmal vielen Dank für Ihre Hilfe und generell Ihre Unterstützung :-)
by SoSci Survey (302k points)
Vorsicht - der Code macht evtl. noch nicht was er soll - er zählt nur, wenn genau eine richtige Markierung pro Kategorie vorliegt (== $correct).

Warum das valueSum() hier nicht korrekt funktioniert, kontrolliere ich gleich mal.
by s085799 (120 points)
edited by s085799
Nach meiner Beobachtung wird alles richtig gezählt. Wenn ich in jeden Bereich genau eine Markierung setze, aber nicht alle in den jeweils passenden Bereich, dann erhalte ich ein korrektes Feedback, z. B. "Sie haben 4 von 6 möglichen Punkten erzielt."

Auch wenn man alle Markierungen in den selben Bereich setzt, wird es korrekt angegeben: 1 von 6 möglichen Punkten erzielt.
by SoSci Survey (302k points)
So ... nun würde auch valueSum() funktionieren. Allerdings werden hier mehrere (korrekte) Markierungen in einem Bereich auch mehrfach gezählt.

Was Ihr Code vermutlich nicht zählt, ist wenn der Teilnehmer 2 korrekte Markierungen in einen Bereich setzt (0 Punkte). Allerdings muss man dafür schon gezielt eine zweite Markierung setzen und dann in den Bereich schieben. Vermutlich also ein seltener Sonderfall...
by s085799 (120 points)
valueSum() klappt jetzt auch prima, vielen Dank.

In diesem Fall habe ich die Markierungen begrenzt, so dass jede nur genau ein Mal vergeben werden kann. Dennoch ist Ihr Hinweis sehr nützlich und gut zu wissen, dass es in einem anderen Fall ggf. nicht so funktionieren würde.

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

...