Actions

Toon logica enquête

From LimeSurvey Manual

This page is a translated version of the page Show logic file and the translation is 0% complete.

Other languages:
English • ‎Nederlands
Deze functie is beschikbaar vanaf versie 1.92.

Algemeen

Tijdens het maken en het testen van de enquête is het belangrijk om de logica van de enquête te valideren voordat u de enquête activeert. Dit geldt met name als er complexe relevantie, maatwerk en validatie-vergelijkingen gebruikt worden, anders kan de enquête mogelijk niet goed ingevuld worden.

Met deze functie kun je snel controleren of de enquête, groep of vraag goed is ingevoerd. Selecteer eerst een enquête, kies daarna de functie in het menu Instellingen.

Show logic file.jpg


Beschrijving

Deze functie toont alles wat gespecificeerd is voor elke vraag (bijvoorbeeld: naam, tekst, help, condities/relevantie, validatie regels, standaarden, subvragen, antwoorden) in een tabelvorm.  Fouten worden aangegeven en je kunt elke vraag en groep aanklikken (de ID's of de variabelen in vergelijkingen) om in een nieuw venster die vraag / groep te wijzigen. Je kunt daarna snel opnieuw de controle uitvoeren, voordat je enquête activeert.

Het overzicht is ook zo ontworpen dat onderzoekers het kunnen lezen en de nauwkeurigheid kunnen valideren van het ontwerp en de logica van de enquête. De functie ververst de cache voor alle expressies van de geselecteerde enquête.

De kolommen zijn:

  • # - een teller, beginnend op 0, die de groep en vraag telt.
  • Name [ID] - de naam van de variabele voor de groep/vraag/subvraag in de qcode naamconventie (de naam die gebruikt wordt in Expressie beheer vergelijkingen).  ID de id van de vraag (QID), of groep (GID).  Ook het type vraag wordt getoond (bijvoorbeeld Meerkeuzevraag [M]).
  • Relevantie [Validatie] (Standaard) - toont:
    • Relevantie - de vergelijking voor de vraag of de groep, met kleur gemarkeerd. Als de vraag altijd gesteld wordt, is de waarde 1.
    • Validatie - Expressie beheer genereert automatisch de validatie vergelijking gebaseerd op de geselecteerde vraagattributen (bijvoorbeeld: min/max aantal antwoorden, min/max/gelijk somwaarde, min/max iwaarde, reguliere expressie validatie).  Hier wordt de gegenereerde validatie vergelijking getoond, je kunt zien of er fouten zijn (bijvoorbeeld: onbekende variabele).
      • Vraagniveau validatie toont de vergelijking om de hierboven beschreven vraagattributen te controleren.
      • Subvraagniveau validatie toont de vergelijking om de array_filter, array_filter_exclude en exclusive_option te implementeren.
    • Standaard - als de vraag een standaardwaarde heeft, wordt die hier, met kleur gemarkeerd, getoond (omdat de standaardwaarde een expressie kan zijn).
  • Tekst [Help] (Tip) - toont:
    • Tekst - de tekst van de groep, vraag, subvraag of antwoord.  Ook met kleur gemarkeerd om het gebruikte maatwerk te tonen, je kunt dan zien of alle variabelen die daarin gebruikt worden bekend zijn.
    • Help - de helptekst voor de vraag, ook met kleur gemarkeerd.
    • Tip - de op vraagattributen gebaseerde intern gegenereerde validatie tip. Ook gebruikt in alle enquête stijlen, in de afdrukbare enquête en in de schermen bij gegevensinvoer.
    • Vraagattribuut - een tabel met alle relevante vraagattributen van de vraag.  Een attribuut dat een vergelijking kan zijn wordt met kleur gemarkeerd, je kunt dan de nauwkeurigheid beoordelen.

Het gebruik van kleuren:

  • Groep - een lichtgrijze achtergrond
  • Vraag - een lichtgroene achtergrond
  • Subvraag - een lichtgele achtergrond
  • Antwoord - een witte achtergrond

Bij antwoorden is er een extra attribuut in de kolom Relevantie

  • Value - de standaard waarde die intern gebruikt wordt bij berekeningen.  Als je beoordelingen gebruikt, is het de beoordelingswaarde.  Anders is het de antwoordnaam.

Gebruik

Bovenaan het overzicht staat een samenvatting van het resultaat van de controle. Als er geen problemen zijn, staat er "Geen fouten gevonden in de enquête", of "Deze groep bevat geen fouten" of "Deze vraag bevat geen fouten".  Als er wel fouten zijn: "X vragen hebben fouten die opgelost moeten worden" (of "X vraag heeft fouten die opgelost moeten worden").

Elke vraag met een fout wordt met rood gemarkeerd in de linkerkolom ("#").  De meest voorkomende fouten zijn:

  • Bad variable name - als je vraagcode niet alfanumerieke tekens bevat, of niet uniek is in de enquête.  Dit wordt nog toegestaan om verouderde hulpmiddelen nog te kunnen gebruiken.  De qcode namen zijn rood, in een purper omlijnd vak.
  • Undefined variable - als een variabele niet gedefinieerd is, of je hebt een tikfout in de naam van een array_filter (of in de verschillende antwoordopties voor array_filter), dan worden er fouten getoond bij je validatie vragen.  De onbekende variabele is rood in een rood omlijnd vak.
  • Bad syntax - als je begint met relevantie vergelijkingen, gebruik je mogelijk teveel of te weinig haakjes. Dergelijke fouten worden ook in rood en rood omlijnd getoond. Als je hier met de muis overheen gaat, dan krijg je een beschrijving van de fout.

Voorbeelden van het met kleur markeren, oftewel syntax highligting.

Een voorbeeld van een enquête met fouten:

Logic file errors.jpg

De volgende types van waarschuwingen en fouten komen voor:

Niet gedefinieerde variabele

De naam van de niet gedefinieerde variabele is in het rood in een rood omlijnd vak.  Als je er met de muis overheen gaat, krijg je de melding "Undefined variable".

Undefined varaible.jpg

Verouderde variabele naam

Vanaf versie 1.92 is de voorkeur voor naamgeving van de vraagcode: [a-Z][0-9a-Z_]* - dus beginnen met een letter en het mag verder letters, cijfers en underscores bevatten. Om ook enquêtes aangemaakt in eerdere versies te ondersteunen, wordt er nu alleen een waarschuwing gegeven. Mogelijk dat dit dus in de toekomst anders wordt, omdat veel nieuwe functies (bijvoorbeeld: SPSS / R exporteren) unieke en goede vraagcodes nodig hebben.

Deze waarschuwingen worden getoond met de naam purper omlijnt in de kolom Name [ID].  Als je er met de muis overheen gaat, krijg je de tekst:

Invalid variable name.jpg

Als je op de naam van de variabele klikt, dan krijg je een venster waar je de fout kunt aanpassen. Je kunt meerdere vensters tegelijk open hebben om fouten te verbeteren. Als je daarna de controle opnieuw uitvoert, dan zie je of alle fouten verholpen zijn.

Fouten in eigen JavaScript

Als je enquête aangepaste JavaScript bevat, dan kun je een vraag als fout gemarkeerd zien, terwijl er geen variabele naam als fout in het rood is gemarkeerd.

Javascript error.jpg

Als je op het ID van de vraag klikt, dan krijg je in de helptekst het probleem in de JavaScript te zien:

Javascript error2.jpg

Elke keer als je JavaScript toevoegt (bijvoorbeeld aan de Groep, Vraag, Help, of Antwoord), verwerkt Expressie beheer het, zoekend naar expressies.  Dit is gewenst, omdat je dan in JavaScript variabelen kunt vervangen.  Maar je kunt natuurlijk een tikfout maken in de naam, of een nieuwe regel of spatie vergeten na een open accolade in JavaScript. Als je tijdelijk de "script" tags verwijderd uit de Help en de vraag opslaat, dan laat expressie beheer je de fouten zien. In het voorbeeld ontbrak de spatie na de open accolade, dus ziet Expressie beheer het als een expressie en is "document" een niet gedefinieerde variabele en is de functie "write" ook niet gedefinieerd.

Javascript error3.jpg

Snel wijzigen en valideren

Als tekst met kleur gemarkeerd is, dan heeft het een tooltip en kun je er op klikken.

  1. Tooltip
    • Functies - als je er met de muis overheen gaat dan krijg je het doel van de functie en de syntax te zien
    • Variabele naam - als je er met de muis overheen gaat dan zie je de plaats (groep en vraag volgorde), de vraagtekst, de mogelijke antwoorden van de vraag
  2. Acties
    • Variabele naam - als je er op klikt dan krijg je een venster om de vraag te wijzigen.  Logisch en gemakkelijk - door eenvoudig te klikken op een naam van een variabele in een relevantie of validatie van de vraag zie je waar het vandaan komt en hoe het gebruikt wordt.

Schermafdruk

De volgende voorbeelden komen uit de Expression Manager Sample Surveys.  Er staan schermafdrukken van enquêtes die uitgevoerd worden, uitleg en mogelijke downloads.

BMI

Voorbeeld: schermafdrukken van de BMI, de lichaamsgewicht index.

Dit is een weergave van de berekening van de BMI waarin de vraagvolgorde aangepast kan worden. Je ziet de relevantie vergelijkingen (die staan na de naam van de variabele, binnen vierkante haken - als [1] voor weight, en [!is_empty(height) && !is_empty(weight)]) voor BMI.  Je ziet ook de op maat gemaakte tekst van de vragen.

BMI reorder.jpg

Het logica-bestand geeft ook aanvullende informatie, inclusief vraagtype en een lijst met subvragen en antwoordopties, met alle vraagattributen.

Het gedeelte (VALIDATION: ) wordt automatisch aangemaakt op grond van de geselecteerde vraagattributen. Je ziet hier welke validatie logica hier wordt toegepast, maar je hoeft deze validatie logica nooit direct aan te geven of te wijzigen.

BMI logic1.jpg

Een goed voorbeeld met een geneste if() om de "weight_status" te bepalen.

BMI logic2.jpg

Trapsgewijze logica

Hier staan schermafdrukken van dit voorbeeld.

Dit voorbeeld toont de validatie logica op subvraag niveau die automatisch aangemaakt wordt wanneer je array_filter en array_filter_exclude gebruikt.  Je ziet ook hoe je de "Other" waarde (het antwoord voor Q02_other is Q01_other) kunt vervangen.

Cascading logic1.jpg

In dit voorbeeld toont Q05 het gelijktijdig gebruik van array_filter en array_filter_exclude op respectievelijk Q01 en Q02. Dit toont de trapsgewijze mogelijkheden van array_filter. Een van de hoofdredenen voor het tonen van de VALIDATIE criteria (op vraag en subvraag niveau) is dat je eenvoudig kunt controleren dat je geen tikfout gemaakt hebt bij het specificeren van de namen van de variabelen van de array_filter of array_filter_exclude (of in dit geval, je lijst gefilterde subvragen).  Als je een tikfout gemaakt hebt, dan wordt de variabele naam in het rood getoond, zodat je de fout snel kunt oplossen.

Cascading logic2.jpg

Dynamische relevantie

Dit voorbeeld toont dynamische trapsgewijze relevantie logica om de zichtbaarheid van de vraag te regelen. Je kunt dit voorbeeld downloaden.

Alle vragen vanaf Q-20 (age) hebben een relevantie vergelijking.  Q-22 (yearsMarried) heeft ook een validatie vergelijking die de waarde gebruikt van het speciale vraagattribuut max_num_value_n, maar een vergelijking doorgeeft (age-5) en dus geen getal.

De vragen kid1-kid3 zijn verplicht (mandatory).  Als de vraag niet relevant is, dan is het verplicht zijn niet van belang. Deze vragen zou je "conditioneel verplicht" kunnen noemen.

Dynamic relevance logic1.jpg

Relevantie op groepsniveau

In dit voorbeeld wordt relevantie op groepsniveau in het logica-bestand getoond. Hier staan schermafdrukken van de demo.

Zoals je kunt zien, komt de relevantie vergelijking op groepsniveau (cohabs > 1 && p1_rel != "") voor in de grijze rij Person 2 voor G-2.

Je ziet ook dat alle vragen verplicht (mandatory) zijn. Als de groep niet relevant is, dan zijn alle vragen in de groep niet relevant, dus de vragen zijn alleen echt verplicht als de groep relevant is.

Ook alle tip/hint teksten worden automatisch voor je aangemaakt. Ze zijn ingedeeld in waardebereik (min/max), opgetelde waardebereik (min/max/equals), aantal antwoorden (min/max), enz. Soms wil je een antwoordbereik valideren maar geen rare validatie aanwijzing als tip/hint tonen aan de gebruiker. Je kunt dan de speciale vraagoptie hide_tip gebruiken (in dit geval kun je voorkomen dat de gebruiker de tip/hint krijgt de leeftijd tussen de 0 en 115 moet liggen, behalve als ze een verkeerde waarde invullen).

Person2 logic.jpg

Komma als radix (decimaal) scheidingsteken

Deze demo toont dat, ondanks dat vanaf versie 1.92 het gebruik van komma als decimaal scheidingsteken bij het uitvoeren wordt ondersteunt, je toch nog een decimaal als scheidingsteken moet gebruiken bij het ontwerpen (bijvoorbeeld bij het specificeren van min/max waarden bij de speciale vraagattributen). Een werkend voorbeeld staat hier.

We herhalen nogmaals dat de VALIDATIE logica automatisch wordt aangemaakt op grond van de speciale vraagattributen. De vergelijkingen zijn vermoedelijk onnavolgbaar, maar je hoeft je er niet druk over te maken.

Radix logic1.jpg