Check out the LimeSurvey source code on GitHub!

What does "no answer" setting really do?

More
4 years 11 months ago #76483 by Fred01
There is an option at the global level and survey level to force a "No answer" option on choice questions.

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.

Please Log in to join the conversation.

More
4 years 11 months ago #76484 by TMSWhite
Fred-

Not-relevant always stores NULL in the database. No-Answer should always store an empty (zero-length) string in the database.

/Tom

Please Log in to join the conversation.

More
4 years 11 months ago #76485 by Fred01
Ah ha, now I see. This seems to work for choice questions (i.e., list), multi-choice, or text questions, but I noticed that on Numeric input questions, when the question IS relevant but not answered it is inserting a NULL. Is that a bug? Or a feature? :)

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.

Please Log in to join the conversation.

More
4 years 11 months ago #76486 by TMSWhite
Fred-

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.

/Tom

Please Log in to join the conversation.

More
4 years 11 months ago #76489 by Fred01
Ok I will test a little more and if necessary open a bug on the numeric problem. Thanks

Please Log in to join the conversation.

More
4 years 11 months ago #76492 by Fred01

Please Log in to join the conversation.

More
4 years 10 months ago - 4 years 10 months ago #77180 by Fred01
Hi Tom,

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.
Last Edit: 4 years 10 months ago by Fred01. Reason: clarity

Please Log in to join the conversation.

More
4 years 2 months ago #89606 by totem_logic
I am trying to follow the conditions of this behavior as described in previous posts. I am not quite clear on which is the expected result.

I have a number of 5 point choice questions which can be skipped (non-mandatory).

Type: 5 point choice
Mandatory: No

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!

Please Log in to join the conversation.

More
4 years 2 months ago #89663 by Fred01
What you are describing sounds like what I see.

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?

Please Log in to join the conversation.

More
4 years 2 months ago #89710 by DenisChenu

totem_logic wrote: The blank values are being converted to 0 by the MySQL AVG() function and are negatively skewing the results.

Maybe the best is to put a bug report if you can do a litlle lss files for example (maybe with response (lsa files)

We can remove '' or NULL answer for the AVG() for stats.

Denis

Assistance on LimeSurvey forum and LimeSurvey core development are on my free time.
I'm not a LimeSurvey GmbH member, professional service on demand (or search sondages pro).

Please Log in to join the conversation.

More
4 years 2 months ago #89723 by totem_logic
I am running the avg straight through mysql via my own script from my CMS.

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.

Thanks!

Please Log in to join the conversation.

More
4 years 2 months ago #89738 by DenisChenu

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 included : use End URL and Automatically load URL when survey complete?
LS not included: jQuery.ajax

Denis

Assistance on LimeSurvey forum and LimeSurvey core development are on my free time.
I'm not a LimeSurvey GmbH member, professional service on demand (or search sondages pro).

Please Log in to join the conversation.

More
4 years 2 months ago #89759 by totem_logic
Thanks everyone! I appreciate the support this time. Cheers!

Please Log in to join the conversation.

Imprint                   Privacy policy         General Terms & Conditions         Revocation information and revocation form