0 votes
in SoSci Survey (dt.) by s178438 (230 points)

Guten Tag,

bei meiner Online-Studie würde ich gerne folgendes umsetzen:

Es werden 20 Triplets (Rangordnungsaufgabe) (1 Triplet pro Seite) randomisiert präsentiert. Nun würde ich gerne in einer internen Variable aufzählen ($n+1) entweder wenn das Triplet nicht vollständig bearbeitet wurde (also nur 2 oder weniger Antworten gegeben wurden) ODER aber (in dem Fall die vorherige Seite) in unter 6 Sekunden bearbeitet wurde.

Szenario: Wenn eine Person also alle 3 Items bearbeitet, jedoch dies unter 6 Sekunden, so soll in der internen Variable um 1 hochgezählt werden (sozusagen als ein missing abgespeichert werden).
Wenn eine Person zwar > 6 Sekunden braucht, dennoch alle 3 Aussagen zuordnet, soll dies auch als missing gezählt werden und in derselben internen Variable um 1 hochgezählt werden.

Folgende Überlegungen habe ich bereits zum PHP-Code:

$n = 0;
registerVariable($n);
debug($n);

folgende Seiten:
    **if(value($triplet1[1])= -9)** or (caseTime('previous') < 6)
    {$n = $n +1;}


// Store in data
put('QU06_01', $n);

registerVariable($n);

beim Fett markierten weiß ich, dass das so nicht stimmen kann. Hier würde ich gerne einen if-Befehl einfügen, mit dem quasi ausgedrückt wird "Wenn das Triplet nicht vollständig beantwortet wurde ODER die vorherige Seite in unter 6 Sekunden bearbeitet wurde, dann zähle bei $n um 1 hoch".

Meine Schwierigkeit liegt vor allem darin, dass die Triplets ja auf 20 Seiten randomisiert dargeboten werden, weshalb ich beim if-Befehl keine konkrete Variable angeben kann.

Hätten Sie hier eine Idee, wie sich dies umsetzen ließe?
Dafür wäre ich Ihnen sehr dankbar!

Viele Grüße

1 Answer

0 votes
by SoSci Survey (308k points)

Passen Sie mit dem Hochzählen auf ... wenn jemand die Seite erneut lädt (z.B. durch Drücken von F5) dann wird der PHP-Code erneut ausgeführt, und es wird eine Frage evtl. doppelt gezählt.

  • Wenn Sie die Zal nur am Ende brauchen, dann machen Sie alles in einem Aufwasch
  • Wenn Sie die Zahl zwischendurch brauchen, zählen Sie entweder jedesmal alles (bisherige) oder verwenden Sie einen Filter mit getRoute()

Wenn Sie alles auf einmal abzählen möchten, würde ich mit einem Array beginnen, welches die Fragekennungen und Seitennummern listet.

$fragen = [
  ['AB01', 'p7'],
  ['AB02', 'p8'],
  ...
  ['AB20', 'p26'],
];

Die Daten müssen dafür Seitenkennungen bekommen, wie Sie sie auch für goToPage() oder setPageOrder() eintragen würden.

Rangordnugen haben so viele Variablen wie Items - Sie können getItems() verwenden, um die nicht zugeordneten zu zählen. Zusammen mit einer Schleife zum Abarbeiten der Seiten...

$n = 0;
for ($fragen as $frage) {
  $unbeantwortet = getItems($frage[0], 'invalid');
  if ((count($unbeantwortet) > 0) || (caseTime($frage[1]) < 6)) {
    $n++;
  }
}
debug($n);
by s178438 (230 points)
$fragen = [
  ['AB01', 'p7'],
  ['AB02', 'p8'],
  ...
  ['AB20', 'p26'],
];

Weise ich hier immer ein bestimmtes Triplet einer Seite zu? Da ich die Items ja randomierst den 20 Seiten zuordnen möchte. Hier verwende ich folgenden Code:

//randomize MFC triplets
// shuffle list only once
if (!isset($triplets1)) {

  // create a list with question keys
  $triplets1 = array(
    'M101','M102','M103','M104','M105','M106','M107','M108',
    'M109','M110','M111','M112','M113','M114','M115','M116',
    'M117','M118','M119','M120');
 
 //shuffle list randomly
 shuffle($triplets1);
}
//make variable available to other pages
registerVariable($triplets1);

//test mix in debug mode
debug($triplets1);

//save keys for MFC triplets1
$K_M101 =array_search('M101', $triplets1)+1;
$K_M102 =array_search('M102', $triplets1)+1;
$K_M103 =array_search('M103', $triplets1)+1;
$K_M104 =array_search('M104', $triplets1)+1;
$K_M105 =array_search('M105', $triplets1)+1;
$K_M106 =array_search('M106', $triplets1)+1;
$K_M107 =array_search('M107', $triplets1)+1;
$K_M108 =array_search('M108', $triplets1)+1;
$K_M109 =array_search('M109', $triplets1)+1;
$K_M110 =array_search('M110', $triplets1)+1;
$K_M111 =array_search('M111', $triplets1)+1;
$K_M112 =array_search('M112', $triplets1)+1;
$K_M113 =array_search('M113', $triplets1)+1;
$K_M114 =array_search('M114', $triplets1)+1;
$K_M115 =array_search('M115', $triplets1)+1;
$K_M116 =array_search('M116', $triplets1)+1;
$K_M117 =array_search('M117', $triplets1)+1;
$K_M118 =array_search('M118', $triplets1)+1;
$K_M119 =array_search('M119', $triplets1)+1;
$K_M120 =array_search('M120', $triplets1)+1;


put('KE01_01', $K_M101);
put('KE01_02', $K_M102);
put('KE01_03', $K_M103);
put('KE01_04', $K_M104);
put('KE01_05', $K_M105);
put('KE01_06', $K_M106);
put('KE01_07', $K_M107);
put('KE01_08', $K_M108);
put('KE01_09', $K_M109);
put('KE01_10', $K_M110);
put('KE01_11', $K_M111);
put('KE01_12', $K_M112);
put('KE01_13', $K_M113);
put('KE01_14', $K_M114);
put('KE01_15', $K_M115);
put('KE01_16', $K_M116);
put('KE01_17', $K_M117);
put('KE01_18', $K_M118);
put('KE01_19', $K_M119);
put('KE01_20', $K_M120);



//show first triplet
question($triplets1[0]);

Gibt es eine Möglichkeit, diese beiden Ansätze zu vereinen?
"Wenn Sie die Zahl nur am Ende brauchen, dann machen Sie alles in einem Aufwasch" -> das finde ich sehr gut!

Vielen Dank schonmal für die erneute Antwort!
Viele Grüße

Vielen Dank schonmal!
by SoSci Survey (308k points)
> Weise ich hier immer ein bestimmtes Triplet einer Seite zu?

Ja und nein. Ihre Art der Randomisierung scheint mir unglücklich: Bei Ihnen gehört jede Frage (Triplet) immer zu einer anderen Seite, also zu einer anderne Zeitmessung.

Ich würde empfehlen, dass Sie die 20 Triplets fix auf 20 Seiten platzieren, und dann einfach diese Seiten in zufälliger Abfolge präsentieren: https://www.soscisurvey.de/help/doku.php/de:create:rotation-pages

Das nimmt eine Menge Komplexität (a) aus Ihrem Code und (b) aus Ihrer Auswertung.

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

...