Welcome to the LimeSurvey Community Forum

Ask the community, share ideas, and connect with other LimeSurvey users!

Möglichkeiten und Grenzen von LimeSurvey

  • Nimmermehr
  • Nimmermehr's Avatar Topic Author
  • Offline
  • New Member
  • New Member
More
2 years 4 months ago - 2 years 4 months ago #223110 by Nimmermehr
Möglichkeiten und Grenzen von LimeSurvey was created by Nimmermehr
Bitte helfen Sie uns, Ihnen zu helfen und füllen Sie folgende Felder aus:
Ihre LimeSurvey-Version: [siehe rechts unten auf Ihrem LimeSurvey-Verwaltungsbildschirm]
Eigener Server oder LimeSurvey-Cloud:
Thema:
==================

Hallo liebe Forengemeinde,

ich bin dabei mich etwas in LimeSurvey einzuarbeiten und frage mich gerade, ob es möglich ist, LimeSurvey nicht nur für Datenerhebungen, sondern auch für eine Ergebnisrückmeldung an den User zu nutzen. Konkret würde ich gerne aus einem Fragebogen Skalen berechnen lassen (also bspw. Item 1,4,7,12,19,23 = Mittelwert Skala 1) und diese mit einer Art Norm zu vergleichen. Ist das technisch möglich wenngleich Lime dafür nicht unbedingt gedacht ist?

LG
Last edit: 2 years 4 months ago by Nimmermehr.
The topic has been locked.
  • Joffm
  • Joffm's Avatar
  • Away
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
2 years 4 months ago #223118 by Joffm
Replied by Joffm on topic Möglichkeiten und Grenzen von LimeSurvey
Hallo,
worin siehst Du den Unterschied zwischen "Datenerhebung" und "Rückmeldung"?
In praxe ist es doch völlig dasselbe.
Die Teilnehmer beantworten irgendwelche Fragen auf einer Internetseite.

Gut, um in Deinem Beispiel zu bleiben; einen solchen Mittelwert kannst Du ganz einfach in LimeSurvey direkt berechnen (wenn Du ihn den Teilnehmern anzeigen willst).
Zunächst ist zu sagen, dass es keine implementierter Funktion "Mittelwert" gibt.
Was es gibt, kannst Du hier im Handbuch ersehen.
[url] manual.limesurvey.org/ExpressionScript_-...mplemented_functions [/url]

Z.B.
Mit Deiner Kodierung (lange, allgemeine Version) und der Voraussetzung, dass die Antwortoptionen numerisch kodiert sind:
{sum(Q1_1.NAOK,Q1_4.NAOK,Q1_7.NAOK,Q1_12.NAOK,Q1_19.NAOK,Q1_23.NAOK)/count(Q1_1.NAOK,Q1_4.NAOK,Q1_7.NAOK,Q1_12.NAOK,Q1_19.NAOK,Q1_23.NAOK)}
hart gekodet:
{sum(Q1_1.NAOK,Q1_4.NAOK,Q1_7.NAOK,Q1_12.NAOK,Q1_19.NAOK,Q1_23.NAOK)/6}

Und wenn Du die Items geschickter benennst, z.B.
Q1_S101,Q1_S202,Q1_S203,Q1_S104,Q1_S205,...
also zunächst ein Kennzeichen, zu welcher Subskala das Item gehört, danach entweder einfach durchnummeriert oder nicht.

Dann verkürzt sich die Berechnung des Mittelwerts von Skala 1 zu:
{sum(that.Q1.sq_S1)/count(that.Q1.sq_S1)}


Das als kurze Antwort.

Insgesamt ist Dir zu empfehlen, das Handbuch zumindest querzulesen, besonders den Teil über ExpressionScript,
und auch die Demo-Studien durchzuarbeiten, welche in der Demo-Installation zu finden sind.
[url] demo.limesurvey.org/admin [/url]

Samsung

P.S.
Warum hast Du die Maske am Anfang nicht ausgefüllt?

Volunteers are not paid.
Not because they are worthless, but because they are priceless
The topic has been locked.
  • Nimmermehr
  • Nimmermehr's Avatar Topic Author
  • Offline
  • New Member
  • New Member
More
2 years 4 months ago #223123 by Nimmermehr
Replied by Nimmermehr on topic Möglichkeiten und Grenzen von LimeSurvey
Salut,

danke für die schnelle Antwort. Den Unterschied zwischen der Datenerhebung und einer Rückmeldung sehe ich darin, dass die Datenerhebung eher unidirektional ist, während die Rückmeldung in beide Richtungen geht.

Danke auch für die Tipps. Ich screene mal das Handbuch. Grundsätzlich hilft mir der Hinweis, dass einfache mathematische Operationen machbar und rückmeldbar sind schon weiter.

Viele Grüße!
The topic has been locked.
  • Nimmermehr
  • Nimmermehr's Avatar Topic Author
  • Offline
  • New Member
  • New Member
More
2 years 4 months ago - 2 years 4 months ago #223207 by Nimmermehr
Replied by Nimmermehr on topic Möglichkeiten und Grenzen von LimeSurvey
LimeSurvey Community Edition
Version 5.2.7+211221

Hallo nochmals,

ich kämpfe mich gerade durch die Programmierung und bin begeistert. Wirklich ein tolles Tool das LimeSurvey. Vielen Dank an alle, die ihren Teil dazu beitragen.

Eine Frage hätte ich ergänzend noch. Habe ich die Möglichkeit die Formeln in Variablen zu übergeben, damit ich mit den Variablen weiter rechnen kann? Ich habe es mit einer Gleichungs-Frage zwar erfolgreich, aber auch wahnsinnig umständlich ausprobiert, da es einfach zu viele Gleichungs-Fragen werden.

Kann man etwas in der Form

{Skala1RW = round((G02Q01_S101 + G02Q01_S102 + G02Q01_S103 + G02Q02_S104 + G02Q02_S105 + G02Q02_S106)/6,2)}

oder ähnlich abbilden? Damit man dann mit Skala1RW in weiteren Formeln rechnen kann?

Viele Grüße
Nimmermehr
Last edit: 2 years 4 months ago by Nimmermehr.
The topic has been locked.
More
2 years 4 months ago #223209 by jelo
Variablen lassen sich durch versteckte Gleichungsfragen definieren.
Der Variablenname entspricht dann dem Fragennamen/code.
manual.limesurvey.org/Question_types#Equation

The meaning of the word "stable" for users
www.limesurvey.org/forum/development/117...ord-stable-for-users
The topic has been locked.
  • Nimmermehr
  • Nimmermehr's Avatar Topic Author
  • Offline
  • New Member
  • New Member
More
2 years 4 months ago #223210 by Nimmermehr
Replied by Nimmermehr on topic Möglichkeiten und Grenzen von LimeSurvey
Vielen Dank. Ja, das meinte ich. Ist bei 24 Variablen etwas umständlich, aber scheinbar nicht anders machbar.
The topic has been locked.
  • Joffm
  • Joffm's Avatar
  • Away
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
2 years 4 months ago #223211 by Joffm
Replied by Joffm on topic Möglichkeiten und Grenzen von LimeSurvey
Nur noch als Ergänzung:
Es ist doch ganz analog.
Bei einer Frage vom Typ "Einfachnennung". die Q1 heißt, werden die Daten in der Antworttabelle in einer Spalte mit dem Namen "Q1" abgelegt (das sind jetzt die Daten, die die Teilnehmer eingegeben haben)
Bei einer Frage vom Typ "Gleichung", die "XYZ" heißt, werden die Daten ebenfalls in einer Spalte mit dem Namen "XYZ" abgelegt (dies sind jetzt keine von den Teilnehmern eingegebene Daten, sondern von Dir berechnete).
Grundsätzlich gibt es in den Daten keinen Unterschied.

Jetzt noch einmal zu Deiner Mittelwertberechnung.

Ich hatte eine Lösung ja schon gezeigt:
{sum(that.Q1.sq_S1.NAOK)/count(that.Q1.sq_S1.NAOK)}

Bei Deiner Idee gibt es zwei Dinge, die Zu Problemen führen können:
1. Das "+" Zeichen.
Das "+" Zeichen dient auch dazu, Texte zu verbinden. Normalerweise erkennt php zwar, dass hier eine Addition stattfinden soll, manchmal aber auch nicht.
Dann ergibt sich dies:  12 + 23 = 1223
Wie auch hier beschrieben ist.
[url] manual.limesurvey.org/ExpressionScript_-...ntation/en#Operators [/url]
sollte man zur Sicherheit zur Verkettung von Texten die Funktion "join()" benutzen, zur Addition die Funktion "sum()"

2. Ein fehlendes ".NAOK"
Sollte aus irgendwelchen Gründen (Filter, Nicht-Pflicht, o.ä.) ein Term der Addition nicht beantwortet sein, wird die gesamte Summe nicht definiert sein und kein Ergebnis bringen.
Aus diesem Grund benutzt man ".NAOK"
[url] manual.limesurvey.org/ExpressionScript_-...ion/en#Usage_of_NAOK [/url]

Jetzt etwas zu Deinen 24 Variablen.
Zunächst: Das ist ja nichts Dramatisches.
Aber wie ich schon vor ein paar Tagen schrieb: Durch geschickte Kodierung kannst Du dies immens verkürzen.

Wenn ich zum Beispiel Deine Gleichung einmal so interpretiere
{Skala1RW = round((G02Q01_S101 + G02Q01_S102 + G02Q01_S103 + G02Q02_S104 + G02Q02_S105 + G02Q02_S106)/6,2)}
Es werden aus der Matrix G02Q01 die ersten drei Teilfragen für die Summe benutzt, weitere dort existierende Teilfragen aber nicht.
Ebenso werden die ersten Teilfragen von G02Q02 nicht verwendet, aber die Teilfragen 4, 5 und 6. 

Dann könntest Du ja folgendermaßen kodieren (Ich nehme jetzt auch nicht diese von LimeSurvey vorgeschlagenen langen Fragecodes)
Q1 mit den Teilfragen
S11
S12
S13
S24
S25
S26
...
Q2 mit den Teilfragen
S21
S22
S23
S14
S15
S16
...

Soll heißen: Mit S1, S2 bezeichnest Du diverse Subskalen, für die Mittelwerte berechnet werden sollen, mit 1,2,..., 5,6 nummerierst Du einfach durch.

Wenn Du dann noch einmal den Gebrauch von "self" und "that" nachliest,
[url] manual.limesurvey.org/ExpressionScript_-....22that.22_variables [/url]

sieht Deine Gleichung für die Skala 1 nur noch so aus (nennen wir sie MWSK1):
{sum(that.Q1.sq_S1.NAOK,that.Q2:sq_S1)/sum(count(that.Q1.sq_S1.NAOK),count(that.Q2.sq_S1.NAOK))}
und für Skala 2 :
{sum(that.Q1.sq_S2.NAOK,that.Q2:sq_S2)/sum(count(that.Q1.sq_S2.NAOK),count(that.Q2.sq_S2.NAOK))}
Bedeutung: Es werden alle Teilfragen (subquestions - sq) der Frage Q1 summiert, die im Code den Text "S1" beinhalten.

Wie auch schon einmal gesagt: Du kannst auch hart kodieren, dass Du immer durch 6 teilst. Aber dann muss sichergestellt sein, dass es immer 6 Werte gibt.

Und als Letztes:
Ich würde die Rundung nicht in dieser Gleichung durchführen.
Du sagtest ja, Du möchtest den Wert für spätere Berechnungen benutzen; da ist der Rohwert sicherlich besser.
Runden würde ich nur, wenn der Wert dem Teilnehmer angezeigt werden soll, also mittels "micro-tayloring" in einer späteren Frage, wie
"Übrigens, der Mittelwert Ihrer Antworten auf Skala 1 ist {round(MWSK1,2)}. 

Und noch ein Allerletztes:
Bei solchen Fragen ist es immer gut, Deinen Prototypen als lss-Export zu schicken.
Dann können wir Dir sicherlich noch besser helfen. 

Joffm

 

Volunteers are not paid.
Not because they are worthless, but because they are priceless
The topic has been locked.
  • Nimmermehr
  • Nimmermehr's Avatar Topic Author
  • Offline
  • New Member
  • New Member
More
2 years 4 months ago #223212 by Nimmermehr
Replied by Nimmermehr on topic Möglichkeiten und Grenzen von LimeSurvey
Erneut vielen Dank für deine Antwort. Die Skalen habe ich bereits wie du gesagt hast benannt. Werde die Formel jetzt mal so versuchen, wie du empfohlen hast. Macht mehr Sinn.
The topic has been locked.
  • Nimmermehr
  • Nimmermehr's Avatar Topic Author
  • Offline
  • New Member
  • New Member
More
2 years 3 months ago - 2 years 3 months ago #223546 by Nimmermehr
Replied by Nimmermehr on topic Möglichkeiten und Grenzen von LimeSurvey
Hi Joffm (= Jo aus Frankfurt?),

ich habe das so umgesetzt, wie du gesagt hast und es hat auch gut funktioniert. Leider sind aber einige Fragen umzupolen, weshalb ich wohl doch wieder auf die Summe durch die Anzahl ausweichen muss. Dabei entsteht aber ein Problem.

Ich habe mittels einer Gleichung eine Frage (G02Q02_S104 ) in eine andere (S104recode ) umkodiert.

if(G02Q02_S104 == 5, S104recode = 0, if(G02Q02_S104 == 4, S104recode = 1, if(G02Q02_S104 == 3, S104recode = 2, if(G02Q02_S104 == 2, S104recode = 3, if(G02Q02_S104 == 1, S104recode = 4, if(G02Q02_S104 == 0, S104recode = 5))))))

Dies hat auch funktioniert. Es werden werte angezeigt. Nur wird mit diesen dann nicht gerechnet. Kann es sein, dass es ich um Strings handelt? Falls ja, wie kann ich das korrigieren?

Danke für deine Geduld!

LG
Nimmermehr
Last edit: 2 years 3 months ago by Nimmermehr. Reason: Genauere Beschreibung
The topic has been locked.
  • Joffm
  • Joffm's Avatar
  • Away
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
2 years 3 months ago - 2 years 3 months ago #223552 by Joffm
Replied by Joffm on topic Möglichkeiten und Grenzen von LimeSurvey
Hallo,
es gibt hier im deutschen Teil eine längere Diskussion, wie man Itembatterien, welche "reverse" Items beinhalten, schnell berechnen kann.

Dazu einfach im Handbuch noch einmal über die Anwendung von ".that" lesen.
[url] manual.limesurvey.org/ExpressionScript_-....22that.22_variables [/url]

Wenn also zum Beispiel in einer Itembatterie die Items 1,2,4 und 6 "normal" sind, 3 und 5 dagegen "revers", muss man sich einfach ein paar Gedanken über die Codierung machen, damit man "that" gut anwenden kann.
Bei Dir ist es eine Skala von 0 - 5 mit numerischen Codes, und wir wollen den Mittelwert berechnen.
Dann codieren wir
Item 1: N01
Item 2: N02
Item 3: R03
Item 4: N04
Item 5: R05
Item 6: N06

Wissend, dass sum(that.sq_N) bedeutet "Summiere alle Items auf, die im Code ein "N" enthalten" ist damit der Mittelwert
{sum(sum(that.sq_N), count(that.sq_R)*5, sum(that.sq_R)*(-1))/sum(count(that.sq_N),count(that.sq_R))}

Heißt nichts anders als:
1.Summiere die Codes aller "normalen" Items
2. Nun müssen wir die von 5 abgezogenen Werte der "reversen" Items dazuaddieren.
Mathematisch 
(5-Q1_R03)+(5-Q1_R05) 
Wir lösen auf und erhalten
10-(Q1_R03+Q1_R05)
Und dies ist eben: count(that.sq_R)*5, sum(that.sq_R)*(-1)

3. Addiere beide Teilterme.

4. Jetzt müssen wir nur noch durch die Gesamtzahl der Items dividieren, also {sum(count(that.sq_N),count(that.sq_R))}

​​​​​​​Ich benutze lieber die Funktion "sum()", da der "+"-Operator auch dazu dient Texte zu verknüpfen. D.h. es kann auch manchmal schiefgehen, so dass 12+1 nicht 13 ergibt, sondern 121.

Und warum irgendetwas nicht berechnet wird, kann ich Dir so auch nicht sagen. Dazu musst Du Dein Opus schon als lss schicken, zumindest diese relevanten Fragen.

Joffm​​​​​​​

P.S.
Und sicherheitshalber überall ein .NAOK hinzu, falls irgendwelche Items wegen Relevanz oder Filtern nicht angezeigt werden.

 

Volunteers are not paid.
Not because they are worthless, but because they are priceless
Last edit: 2 years 3 months ago by Joffm.
The topic has been locked.
  • Nimmermehr
  • Nimmermehr's Avatar Topic Author
  • Offline
  • New Member
  • New Member
More
2 years 3 months ago #223557 by Nimmermehr
Replied by Nimmermehr on topic Möglichkeiten und Grenzen von LimeSurvey
Toll. Danke für die schnelle Hilfe. Klar, mit (5-Q1_R03) kann man es viel leichter umsetzen. Da stand ich vollkommen auf dem Schlauch.
The topic has been locked.
  • Joffm
  • Joffm's Avatar
  • Away
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
2 years 3 months ago #223571 by Joffm
Replied by Joffm on topic Möglichkeiten und Grenzen von LimeSurvey
Die Vergreisung scheint fortzuschreiten:
Die Syntax von ".that" ist natürlich "that.QCODE.sq_..."

Joffm
Deine geographische Idee war ganz zutreffend.

Volunteers are not paid.
Not because they are worthless, but because they are priceless
The topic has been locked.
Moderators: Joffm

Lime-years ahead

Online-surveys for every purse and purpose