- Posts: 113
- Karma: 3
- Thank you received: 5
What does "no answer" setting really do?
Here's how the manual describes it:
Show 'no answer' option for non-mandatory questions: When a question of a radio button/select type that contains editable answers (i.e.: List & array questions) is not mandatory and this is set to 'Yes' (default), an additional entry 'No answer' is shown for each subquestion - so that participants may choose to not answer the question. Some people prefer this not to be available. Set this to 'No' to turn this off.
But while it does seem to make a "No Answer" choice appear in the survey presentation, it doesn't actually save anything to the database. So what is the point of this feature? Am I missing something?
We would like to be able to distinguish between a "no answer" (question was posed but not answered) and a "non relevant" (question was never posed), but it seems like Limesurvey records a null for both cases.
Not-relevant always stores NULL in the database. No-Answer should always store an empty (zero-length) string in the database.
Also, it still seems as though on a choice/list question, it still doesn't matter whether you had the "no answer" setting enabled or not. In either case, assuming the question is relevant, it inserts a zero-length string. So it's just a cosmetic feature for the display? Or am I missing something.
I tested to confirm that NULL was always entered when questions were irrelevant, but never tested that relevant, unanswered questions would be blank. So, if you're seeing any cases like that one you describe, that's a bug - please open a bug ticket.
Also, if you don't explicitly click "No Answer", it will still record a blank in the database, so unanswered is the same as "No Answer". Often, the "No Answer" option starts in the checked state to indicate that behavior.
Something else I've noticed in 1.92 is that Equation questions also behave oddly in terms of this empty vs. null issue.
As you probably recall, we found that non-responses to relevant text or choice questions are recorded as EMPTY, while non-relevant questions are recorded as NULL.
Equation questions use a TEXT fieldtype in the survey_NNN table rather than a numeric, presumably so that they can also be used for non-numeric expressions.
Now suppose you have the following questions, all of which are relevant...
.width: How many meters wide is your room? (numeric)
.length: How many meters long is your room? (numeric)
.area: Room area (equation) (width * length)
Now if the user leaves .width, .length, or both empty then I would expect .area to also be empty. However it puts a zero in the field, which is the last thing we would want since it looks like a valid number (at least in some contexts) but really isn't.
A workaround is to put relevance equation on .area to ignore if either .width or .area are missing.
However, this is suboptimal, or at least perhaps should be documented.
I have a number of 5 point choice questions which can be skipped (non-mandatory).
Type: 5 point choice
In all cases where there is no answer, LS stores a blank value and not a NULL value. I expected no response to have a NULL value.
The blank values are being converted to 0 by the MySQL AVG() function and are negatively skewing the results.
Please confirm the expected value of the non-response to a non-mandatory 5 point choice. Thanks!
A 5-pt choice is a choice (not a numeric) question. It stores the responses in a varchar field.
If the question is relevant (ie, was shown to the user, and not hidden by a condition/expression), then a "no answer" is recorded as a zero-length string ("empty").
If the question WAS not relevant (not shown to the participant because of a condition/expression), then it will put a NULL in the field.
Limesurvey stats module does a frequency distribution and a mean calculation for 5-pt choices. Apparently they are ignoring the no-responses when they calculate the mean. Maybe you could do the same in your avg query?
Maybe the best is to put a bug report if you can do a litlle lss files for example (maybe with response (lsa files)
totem_logic wrote: The blank values are being converted to 0 by the MySQL AVG() function and are negatively skewing the results.
We can remove '' or NULL answer for the AVG() for stats.
What I think I will do is create a maintenance script to run periodically and replace empty values with NULL values.
Any way to trigger my third-party script once a new survey entry has been saved (like a post-process script)? I don't recall any such feature, but I also haven't gone under the hood in a while.
LS included : use End URL and Automatically load URL when survey complete?
totem_logic wrote: Any way to trigger my third-party script once a new survey entry has been saved (like a post-process script)? I don't recall any such feature, but I also haven't gone under the hood in a while.
LS not included: jQuery.ajax