Actions

Beispielumfragen für Expression Manager

From LimeSurvey Manual

Revision as of 08:11, 10 August 2023 by Maren.fritz (talk | contribs) (Created page with "==Übersicht==")


Einführung

Der beste Weg, den Umgang mit ExpressionScript zu erlernen, besteht darin, mit Arbeitsbeispielen herumzuspielen und sie an Ihre Bedürfnisse anzupassen.

Nachfolgend finden Sie eine Reihe von Beispielumfragen, um zu demonstrieren (und zu testen), wie das EM zur Verbesserung Ihrer Umfrage verwendet werden kann. Diese Umfragen finden Sie im Ordner /docs/demosurveys der Distribution.


Relevanz, Tailoring und Gleichungen

Übersicht

Das folgende Beispiel berechnet den BMI (Body-Mass-Index) jedes Befragten. Unten sehen Sie die Funktionen, die in diesem Beispiel demonstriert werden.

EM-Funktionen demonstriert

  1. 'Relevance - Unterstützung für leistungsstarke bedingte Logik;
  2. Piping / Tailoring - bietet die Möglichkeit, Antworten und Fragemetadaten weiterzuleiten oder anzupassen;
  3. Dynamic Tailoring – Beachten Sie, dass Berichte auf der Seite geändert werden, wenn Sie Fragen beantworten.
  4. Micro-Tailoring - bedingte Anpassung innerhalb von Sätzen und Berichten mithilfe von if()-Anweisungen
  5. Gleichungen - ein neuer Fragetyp, mit dem Sie Berechnungen durchführen und die Ergebnisse in der Datenbank speichern können, auch wenn die Berechnung ausgeblendet ist
  6. Bedingte Validierung - Validierung Kriterien wie der minimal zulässige Wert können bedingt sein – z. B. auf der Grundlage von Gleichungen.


Screenshots

In diesem Beispiel wird der Body-Mass-Index berechnet, eine Berechnung Ihres Gewichts und Ihrer Größe, um festzustellen, ob Sie übergewichtig sind. Beachten Sie, dass zunächst nur die vier Pflichtfragen angezeigt werden:



Sobald Sie Ihre Informationen eingegeben haben (und wählen können, ob Sie metrische oder nicht metrische Einheiten verwenden möchten), wird ein maßgeschneiderter Bericht angezeigt, der Ihre Eingaben zusammenfasst und Ihnen Ihren Gewichtsstatus mitteilt:



Hier ist ein anderes Beispiel, bei dem nichtmetrische Einheiten verwendet werden, um zu zeigen, wie sich das Ergebnis dynamisch ändert:



Auf der internen Ebene gibt es versteckte Fragen vom Typ Gleichung, die die Daten bei Bedarf in Metriken umwandeln und die Metrikgröße, das Gewicht, den BMI und den Gewichtsstatus in der Datenbank speichern, ohne dass benutzerdefiniertes JavaScript erforderlich ist .

In der nächsten Reihe von Beispielen sehen Sie, wie Sie mathematische und andere Funktionen in maßgeschneiderten Berichten verwenden können. So sieht die Seite aus, bevor Sie Daten eingeben. Es gibt eine bedingte Logik, um leere Zellen anzuzeigen, wenn keine (oder nicht numerischen) Daten eingegeben werden, anstatt „NaN“ oder „Durch Null dividieren“ anzuzeigen.



Wenn Zahlen eingegeben werden, ändert sich der Bericht auf der Seite und zeigt die durchgeführte Berechnung und ihr Ergebnis an.



In dieser Beispielbefragung gibt es viele weitere Beispiele. Der folgende Screenshot zeigt beispielsweise eine von Dutzenden Möglichkeiten, wie Sie die Seite „Dynamische Relevanz“ ausfüllen können. Probieren Sie, wie im Hilfetext vermerkt, verschiedene Altersgruppen und vor allem unlogische Kombinationen von Antworten aus, um die amüsanten Meldungen zu sehen, die unten generiert werden. Beachten Sie außerdem, dass, wenn Sie angeben, dass Sie mehr als ein Kind haben, in der Nachricht „Ich hoffe, dass Ihnen das Spielen mit Ihren Dies zeigt, wie Sie Sätze ganz einfach mikrozuschneiden können, um sie an das Geschlecht und/oder die Anzahl Ihrer Probanden anzupassen. Sie können sogar Verben einfach konjugieren und Substantive basierend auf Geschlecht und Numerus deklinieren.



Herunterladen

Um auf das Umfragebeispiel zuzugreifen, klicken Sie bitte auf den folgenden Link: LS3_em_tailoring.zip.

Beispielzählung

Übersicht

Dies ist ein Volkszählungsbeispiel, bei dem gefragt wird, wie viele Personen in Ihrem Haushalt leben.

Es zeigt, wie die Relevanz auf Gruppenebene die Implementierung einer „Schleife“ von Fragen erleichtern kann. Nachdem ich die Gruppe für Person 1 erstellt hatte, exportierte ich die Gruppe. Da ich Qcode-Variablennamen wie p1_name anstelle des SGQA-Codes verwendet habe, konnte ich einen Texteditor verwenden, um die Gruppe mehrmals schnell zu bearbeiten und erneut zu importieren (z. B. dauerte das Bearbeiten und erneute Importieren jeder Wiederholungsgruppe etwa 10 Sekunden, um zu versichern, dass alle Variablen eindeutige Variablennamen hatten und dass die Logik auf Gruppenebene korrekt war).

Sie können auch die Funktion Frage kopieren verwenden, diese ist jedoch nicht so schnell wie die oben vorgeschlagene Option.

Dies zeigt auch, wie Sie verhindern können, dass die Meldung „Fertig“ angezeigt wird, bis die Umfrage wirklich abgeschlossen ist (z. B. wenn alle benötigten Gruppen abgeschlossen sind).


EM-Funktionen demonstriert

  1. 'Relevanz auf Gruppenebene - Die Folgegruppen (Person 1-5) werden nur für die angegebene Anzahl von Mitbewohnern angezeigt;
  2. Tailoring - Der Abschlussbericht fasst zusammen die demografischen Daten für jeden Mitbewohner;
  3. Progressive Fragenanzeige - Ob im Gruppen- oder All-in-One-Modus, nachfolgende Fragen werden erst angezeigt, sobald die vorherigen beantwortet wurden.


Screenshots

Die Umfrage generiert einen maßgeschneiderten Bericht, der die demografischen Daten der angegebenen Anzahl von Mitbewohnern zeigt:



Wenn Sie in den Modus „Fragen nacheinander“ wechseln, sehen Sie, dass der Index die Fragen individuell anpasst. Da der Benutzer angibt, dass es sich bei der Person um eine Frau handelt, fragt er: „Wie heißt sie?“. Und da wir mit „Mary“ geantwortet haben, lautet die nächste Frage: „Wie alt ist Mary?“



Herunterladen

Um das Umfragebeispiel herunterzuladen, klicken Sie hier: LS3_group_relevance.zip.


Kaskadierende Array-Filter

Übersicht

Diese Umfrage basiert auf dem Design einer Umfrage mit freundlicher Genehmigung von Joy Lane Research, LLC.


Screenshots

Beachten Sie im Folgenden Folgendes:

  • Q02 zeigt nur die in Q01 überprüfte Produktgruppe (mithilfe von array_filter)
  • Q02 zeigt auch „Ein anderes Produkt“ an, den Text, der in das Feld „Andere elektronische Produkte“ in Q01 eingegeben wurde
  • Q04 zeigt nur Produkte aus Q02 an, die überprüft wurden (damit der Array-Filter kaskadiert)
  • Q05 zeigt nur Produkte aus Q02 an, die in Q02 nicht überprüft wurden (mithilfe eines kaskadierten array_filter_exclude)




Herunterladen

Klicken Sie auf den folgenden Link, um das obige Beispiel herunterzuladen: LS2_cascading_array_filter-Umfragebeispiel.


Piping/Anpassung unter Verwendung aller Fragetypen und Attribute

Übersicht

Wenn Sie nicht wissen, wie Sie Ihre Variablen benennen sollen (SGQA vs. Qcodes), sind Sie nicht allein. Obwohl in der Hauptdokumentation beschrieben wird, wie man Qcode-Variablennamen erstellt, gibt es nichts Besseres, als es in einer funktionierenden Demo zu sehen. Diese Umfrage zeigt, wie Sie mit ExpressionScript auf Frageattribute und Antworten zugreifen können.


Template:Hinweis


Inhalt

  • Beispiele für jeden Fragetyp
  • Alle Fragetypen, die „andere“ verwenden können, sind enthalten, damit Sie sehen können, wie sich dies auf die Variablenbenennung auswirkt
  • Standardwerte für alle Fragetypen, die Standardwerte akzeptieren
  • Anpassung - On-Page- und Off-Page-Berichte mit allen 16 verfügbaren EM-Punktnotationssuffixen.
  • Diese Berichte zeigen alle aktuell eingegebenen Daten (zeigen Ihnen also, wie Sie anstelle der Druckberichte Ihre eigenen druckbaren Berichte für Benutzer anstelle des Druck-Antwort-Bildschirms erstellen können)
  • Korrekte Qcode- und SGQA-Benennung aller Variablen


Screenshots

Da es sich um eine umfangreiche Umfrage handelt, haben wir uns entschieden, keine Screenshots beizufügen. Bitte laden Sie es stattdessen herunter und spielen Sie damit.


Herunterladen

Klicken Sie auf den folgenden Link, um die Umfrage herunterzuladen: LS3_EM_question_attributes.lss


Traditionelle Validierung, neu konzipiert

Übersicht

Dies zeigt alle Validierungstypen, die Ausdrücke verwenden, und wie sie sich auf die einzelnen Fragetypen auswirken, die die Validierung unterstützen. In vielen Fällen werden die Validierungstipps zunächst ausgeblendet und nur dann angezeigt, wenn eine Frage die Validierungskriterien nicht erfüllt (sie verschwinden also auch, sobald die Frage die Validierungskriterien erfüllt).


Validierungstypen demonstriert

  1. min_num_value_n – Mindestwert für eine Antwort
  2. max_num_value_n – Höchstwert für eine Antwort
  3. min_answers – Minimum Anzahl der erforderlichen Antworten
  4. max_answers Maximale Anzahl zulässiger Antworten
  5. multiflexible_min – zulässiger Mindestwert für eine Antwort (für Fragetyp „Multiflexi-Zahlen“)! N!#multiflexible_max – maximal zulässiger Wert für eine Antwort (für Multiflexi-Zahlen-Fragetyp)
  6. min_num_value – minimal zulässige Summe über alle Antworten für die Frage! N!#max_num_value – maximal zulässige Summe aller Antworten für die Frage
  7. equals_num_value – die Summe aller Antworten für die Frage muss diesem Wert entsprechen!N !#validation – Dies ist die reguläre Ausdrucksvalidierung für die Frage – sie kann auf einzelne Zellen angewendet werden


Screenshots

Bei Verwendung neuer CSS-Stile wird für jeden Validierungstyp ein eigener Tipp angezeigt. Wenn sie angezeigt werden, können sie über die Option hide_tip ausgeblendet werden. Die Standardoption besteht darin, sie in roter Schrift anzuzeigen, wenn die Frage die Validierungskriterien nicht erfüllt, und in grüner Schrift, wenn sie diese erfüllt:



Ein Benutzer kann keine Seite mit Validierungsfehlern einreichen. Sie werden sofort gewarnt, wenn Sie falsche Informationen eingegeben haben:



Die Validierung kann auf einzelne Zellen innerhalb eines Arrays angewendet werden, wie in diesem Beispiel, wo die Validierung regulärer Ausdrücke sicherstellt, dass es sich bei jedem Eintrag um eine ordnungsgemäß formatierte US-Telefonnummer einschließlich Ortsvorwahl handelt.



Herunterladen

Um das obige Beispiel herunterzuladen, klicken Sie auf den folgenden Link: LS3_Validation_tests.zip.


Validierungsgleichungen

Übersicht

Manchmal benötigen Sie eine benutzerdefinierte Validierung, die mit den herkömmlichen Min/Max-Kriterien nicht erreicht werden kann. Dazu müssen Sie die Optionen em_validation_q und em_validation_sq verwenden, mit denen Sie komplexe Validierungsgleichungen auf Fragen- bzw. Unterfragenebene erstellen können.


Template:Hinweis


EM-Funktionen demonstriert

  1. em_validation_q – Dies ist eine Gleichung, die bestimmt, ob die gesamte Frage gültig ist
  2. em_validation_q_tip – Dies ist die Meldung, die angezeigt wird, wenn die Frage die em_validation_q-Kriterien nicht erfüllt! N!#em_validation_sq – Dies ist die Gleichung, die bestimmt, ob jede Unterfrage (Array-Zelle) gültig ist
  3. em_validation_sq_tip – Dies ist die Meldung, die gegebenenfalls angezeigt werden soll der Unterfragen ist ungültig.

Wenn em_validation_sq verwendet wird und eine Zelle ungültig ist, wird die Hintergrundfarbe dieser Zelle im Allgemeinen rot, um anzuzeigen, dass ein Fehler vorliegt.


Screenshots


Diese Frage stellt sicher, dass Sie das Alter Ihrer Kinder in absteigender Reihenfolge eingeben, indem Sie diese Validierungsgleichung anwenden:

q1_sq1 >= q1_sq2 && q1_sq2 >= q1_sq3 && q1_sq3 >= q1_sq4





Im folgenden Beispiel stellt die Validierung sicher, dass nicht mehr als drei Fragen in einer bestimmten Zeile beantwortet werden, indem diese Validierungsgleichung angewendet wird:

(sum(Test_A_1, Test_A_2, Test_A_3, Test_A_4, Test_A_5) <= 3) && (sum(Test_B_1, Test_B_2, Test_B_3, Test_B_4, Test_B_5) <= 3) && (sum(Test_C_1, Test_C_2, Test_C_3, Test_C_4, Test_C_5) < = 3)

Sie können dies auch wie folgt schreiben: LimeSurvey konvertiert es zur Laufzeit automatisch in den oben aufgeführten Ausdruck.

(sum(self.sq_A) <= 3) && (sum(self.sq_B) <= 3) && (sum(self.sq_C) <= 3)



Herunterladen

Um das in den obigen Beispielen verwendete Umfragebeispiel herunterzuladen, klicken Sie auf den folgenden Link: ls2_test_em_sq_validation.lss.


Relevanz der Unterfrage

Übersicht

Dies zeigt, wie array_filter und Validierungskriterien interagieren können. Bei Validierungen, die sich auf Summen beziehen, werden nur relevante (sichtbare) Werte berücksichtigt.


EM-Funktionen demonstriert

  1. array_filter
  2. array_filter_exclude
  3. min_num_value
  4. max_num_value
  5. equals_num_value

Es zeigt auch eine dynamische Berichterstattung über die Anzahl der in den Kernfragen beantworteten Fragen.


Screenshots

Durch Ändern der Anzahl der sichtbaren Zeilen wird die Summe dynamisch geändert. Durch das Markieren einer Unterfrage als irrelevant wird ihr Wert nicht gelöscht. Wenn es vielmehr irrelevant ist, tragen seine Werte zu keiner Gleichung bei.



Beachten Sie, was passiert, wenn wir die „Fünfte Unterfrage“ für die erste Frage „Welche Zeilen sollen unten angezeigt werden“ überprüfen. Beachten Sie, dass die Summe für die zweite Frage „Geben Sie einige Zahlen ein“ jetzt 5 beträgt. Auch wenn Unterfrage 5 für diese Frage immer noch den Wert 14 hat (z. B. wenn Sie das Häkchen bei der fünften Unterfrage entfernen, sehen Sie wieder den Wert 14). , trägt dieser Wert nicht zur Summe bei, da er derzeit irrelevant ist. Alle irrelevanten Daten werden bei der Übermittlung gelöscht (in der Datenbank auf NULL gesetzt), bleiben aber auf der Seite verfügbar, falls Benutzer ihre Meinung zu den Antworten ändern möchten oder müssen.



Herunterladen

Um unser Beispiel herunterzuladen, klicken Sie hier: ls2_subquestion_relevance.lss.


Komma als Basistrennzeichen (Dezimalpunkt) verwenden

Übersicht

Das ExpressionScript stellt sicher, dass nur gültige Zahlen in numerische Felder eingegeben werden können. Wenn Sie eine ungültige Zahl eingeben, werden Sie gewarnt, dass etwas nicht stimmt (z. B. wird im Fall des fruchtigen Themas die gesamte Frage „rot markiert“).

Beachten Sie, dass die numerischen Werte in der Datenbank immer so konvertiert werden, dass ein Punkt als Basistrennzeichen verwendet wird. Auf diese Weise funktionieren die statistischen Analysen ordnungsgemäß.

Um das Basistrennzeichen zu ändern, greifen Sie auf die Optionen Textelemente auf der Registerkarte Einstellungen zu und suchen Sie nach der Funktionalität Dezimalzeichen.


Template:Hinweis


Fragetypen mit Radix-Trennzeichen

  1. Numerische Eingabe [ N]
  2. Mehrfache numerische Eingabe [ K]
  3. Array (Zahlen) [ :]
  4. Array (Texte) [ ;], bei Verwendung des Attributs numbers_only
  5. Liste (Radio) [ L], bei Verwendung des Attributs other_numbers_only
  6. Kurzer Freitext [ S], bei Verwendung des Attributs numbers_only
  7. Mehrfacher Kurztext [ Q], bei Verwendung des Attributs numbers_only
  8. Multiple Choice [ M], bei Verwendung des Attributs other_numbers_only
  9. Multiple Choice mit Kommentaren [ P], wenn das Attribut other_numbers_only verwendet wird


Screenshots

In den folgenden Screenshots können Sie erkennen, dass Komma als Basistrennzeichen verwendet werden kann.



Herunterladen

Um das obige Beispiel herunterzuladen, klicken Sie auf den folgenden Link: ls2_comma_as_radix_separator.lss.


Randomisierungsgruppen

Übersicht

Diese Umfrage zeigt, wie das Attribut „random_group“ genutzt werden kann.

If this attribute is used, each time you start the survey, the question order is randomized. However, once the survey is started, the randomization order remains fixed, even if you change languages.


Screenshots

Let's check together the below example. The first random question on the page will either be Q1 , Q4, or Q7. The second randomized question on the page will either be Q2, Q5, or Q8.



Here is the randomization generated the first time I tested this survey.



A different randomization was generated the second time I tested the survey.



But, when I switched to French (without re-starting the survey), the randomization order remained intact.



Download

To download the above example, click on the following link: Randomization_Group_Test.lss


Randomly Ask One Question Per Group

Overview

This survey shows how you can configure a survey to randomly display one question per group. In it, there are 5 groups of 6 questions each. At the outset, in Group 0, five hidden Equation questions, called ask1-ask5, are populated. Each one has the value of {floor(rand(1,6.9999))} in the question text field, which means that the variables ask1-ask5 will each have a value between 1 and 6. Then, each question in the group has a relevance equation like "ask1==N" where N is the Nth question in the group (so the third question in group 1 has the relevance equation  "ask1==3").

This survey works equally well in survey-at-a-time, group-by-group, and question-by-question modes. Since the randomization is set in the first group, and that group is effectively hidden (since all of the ask1-ask5 questions are hidden), the randomization stays the same for the subject; but each different subject will have a distinct randomization.


Features Demonstrated

  1. Equation question type
  2. Randomization functions
  3. Conditional (if) function


Screenshots

This is Group0, which uses the Equation question type to select random values from 1 to 6 for each group (except the last group, which has only 4 questions).  Note that the "if()" function first checks whether ask1 has already been set, and if so, uses that value. If the value hasn't been set, then it uses a random value to set the value of ask1.



This Group shows how the variable (ask4) from Group0 is used to control which question is visible within the fourth group.



Download

To download the above survey example, click here: Random questions within a group survey example.


Randomly Ask A Specific Number Of Questions In A Group (a subset of the questions)

  This applies only to all random questions from one group and only if the Group by group or All in one format is used.



Overview

This survey shows how to ask a random subset of questions in a group. For example, show 5 random questions out of 10 questions located within a group.

The survey has one group containing 10 questions. All questions are assigned the same randomization group name. As a result, they will be displayed in a random order on page load. Each question is given a relevance equation that the sum of the "relevanceStatus" of all other questions in the group is less than the number of questions you want to show. Since relevanceStatus is assigned as questions are rendered, this effectively totals the number of preceding questions.

So, in our 5 out of 10 example, the equation for Q1 would be:

sum(Q2.relevanceStatus, Q3.relevanceStatus, Q4.relevanceStatus, Q5.relevanceStatus, Q6.relevanceStatus, Q7.relevanceStatus, Q8.relevanceStatus, Q9.relevanceStatus, Q10.relevanceStatus) LT 5

For Q2, it would be:

sum(Q1.relevanceStatus, Q3.relevanceStatus, Q4.relevanceStatus, Q5.relevanceStatus, Q6.relevanceStatus, Q7.relevanceStatus, Q8.relevanceStatus, Q9.relevanceStatus, Q10.relevanceStatus) LT 5

And so on...


Features Demonstrated

  1. relevanceStatus variable
  2. Randomizing


Download

To download the above example, click on the following link: Random 5 out of 10 survey example.

Rating User-Entered List of Products

Overview

The below example shows how you can ask users to list a set of products that interest them, and then have them rate those products.


EM Features Demonstrated

  1. Tailoring answers - when rating products, the labels come from the comment field of the preceding multiple choice question
  2. Tailoring scales - many advanced questions options, like scale headings, can also be tailored.


Screenshots

This image shows that even though only products 1,3, and 5 were selected, only those 3 are displayed (using the array_filter attribute). Moreover, the row labels in the second question are either the product numbers (if nothing is entered into the comment field) or the contents of the comment fields.



This image shows how the tailored answers are specified:



Here is the Show Logic File for that question, which lets us verify that the conditional logic works as desired (e.g., to see whether there are any syntax errors):



The next image shows a group in which you specify a 5 point rating scale (Options 1-5), the title of the scale, and the products you want to rate. The final question shows that each of the parts of the array question can be tailored:



The next image shows the logic file view of the last question. As you can observe, the subquestions, answers, and scale headers can be tailored.



Download

To download the survey example from above, click on the following link: Rating user-entered list of products survey example.