2014年1月23日更新

下文提到的模板图为3.X版时的截图,目前6.X版中已经将翻译改为主题,见下图。
LimeSurvey6.x模板变为主题.jpg


LimeSurvey是一款开源的问卷调查系统,由于用法习惯以及文档语言等的问题,在国内相对小众一些,中文教程稀缺。
本文结合自己使用LimeSurvey制作心理测验问卷时的一些情况而总结的个人心得,只是提供一些思路,也欢迎大家留言探讨。
关于LimeSurvey的优势等,这里就不赘述了。基本的操作也可以参看官方文档或者本站的LimeSurvey教程

一、模板化

注意:LimeSurvey中的模板(Template)其实是跟其他开源系统的主题(Theme)类似(见下图),所以下文所提的如果没有特别说明都不是指主题类的模板。
LimeSurvey-Template.png
问卷系统的模板化虽然同其他开源软件(MediaWiki)在操作上会有所区别,但思路基本上是一致的——就是尽可能把相同重复的内容固定成一定形式,以减少生成和调整的工作量(LimeSurvey中的邮件模板就很符合这个概念)。
要实现LimeSurvey的模板化可以从以下几个方面入手:
1. 从问卷的板块(也就是题组)设计要尽可能统一。心理测验问卷的结构大体上都比较类同,比如标题、问卷介绍、指导语、基本信息、题目(选项)、计分、常模、具体解释和相关建议等。问卷介绍、指导语等文字内容并没有什么特别要求,关键在于后面几项。我的通常做法是每一项都作为一个问题组,也就是测试题目组、计分组、常模分组、结果解释组和报告预览组。为什么会这样设计后面会讲。比如最常用的SCL-90,我的分组如下:
SCL-90问卷结构.png
2. 善用导出导入功能。如果问卷的大体形式都相似,那么在设计完题组之后可以先不急着录入题目内容,而是将其导出,并在下一个问卷创建时再导入。这样做的好处是省去很多重复建立题组和题目的步骤,当然调整是必然的。另外,最常用的基本信息并不需要每次都重复新建,只需要在第一次创建之后使用导出功能,以后每次使用再导入即可,可以节约大量时间。如果后期有调整,修改导出一个后再导入到其他问卷。虽然比不上MediaWiki这种修改一个模板,整体都自动发生改变,但比起手动修改每一个还是快捷不少。所有导出的题组或题目都可以单独生成文件保存,用熟悉的文件名然后统一保存在特定目录下,也方便归档查找。当然个别重复的问题,你也可以直接导出问题后再导入。
LimeSurvey导出问题组.png
3. 答案选项保存为标签集。我最喜欢LimeSurvey的问题类型之一就是带子问题的(比如阵列)。不管是问题的输入和答案的生成、计分都很方便。通常心理学问卷使用李克特量表的较多,答案选项比较类似。所以在每次填完一个答案选项后, 你可以先将其保存为标签集,之后很有可能会用到。
LimeSurvey标签组.png
4. 结果呈现的代码尽量保持一致。如果没有特殊要求,报告的结构也需要保持一致。表格、文字等HTML标签最好使用相同的类或id,可视化呈现(如echarts图表)的样式标准化之后也能确保代码的相似性,减少修改量。另外,在结果报告中尽量不使用计算结果的表达式,而采用“中间变量”的方式(参见下文)。

二、巧用问题

LimeSurvey的问题类型非常丰富,但大部分并不怎么常用。不同于传统的问卷编辑系统,“问题”不仅仅只是用来提问的,它还可以作为中间变量或者代码调试器,一旦用好了还是可以发挥意想不到的作用。
1. 结果调试。我喜欢在整个问卷最后增加一个调试的问题,它的作用就是用来呈现我希望呈现的问卷结果。尤其是使用echarts这种可视化图表时,因为js代码和LimeSurvey自身的代码可能会发生混淆,所以还是很有必要的。在调试过程中,可以先不急着将计算结果放进代码中,随机取几个值先检查效果后再添加也来得及。
2. 中间变量。最初在呈现结果时,我都会直接将计算的表达式和常模数值写进报告代码中,虽说不影响最终的生成。但是在测试中难免会有输错计算公式和数值的情况,加之结算结果直接放最后的话,在调试中势必要完成所有的题目之后才显现结果,加大了调试的工作量。最好的办法还是设置一个计算结果的题组,然后每一个维度的计算结果保存为一个问题(也就是将计算表达式放进问题中,将问题类型设置为方程式)。先不要急着将问题隐藏,预览问卷并做一下测验题目,核对计算结果是否正确之后再将问题隐藏。
LimeSurvey因子分.png
同样的,常模数值和结果解释也可以放进特定的题组。在结果报告中只要调用某个问题的值就可以了。比如在echarts中的代码:

series: [
    {
        name: '各维度分值',
        type: 'radar',
        data: [
            {
                value: [{D1.value}, {D2.value}, {D3.value}, {D4.value}, {D5.value}],
                name: '我的分值'
            }
        ]
    }
]

其中D1~D5就是问题名,保存了各维度的计算分值。结合上面提到的模板化方法,类同的报告甚至可以直接套用而无需进行任何修改。
注意:不管是作为结果调试还是作为中间变量,LimeSurvey因问题类型不同,所以呈现结果的方式也不同(比如使用.value或.shown等),可根据具体情况进行选择。

关于启用调查后的修改问题

通常在调查启用后,我们一般不会随意进行修改。如果是需要增加题组或者是修改题型,那么能做的就只有停用后再修改了。所以在一开始设计调查的时候,我们一定要明确有多少题组和多少题目。哪怕有些问题暂时用不上(比如结果解释)也可以先创建了再隐藏,这样一来,就算是调查发布后我们仍然是可以去修改该问题的内容,免去了停用的麻烦。其实LimeSurvey对启用调查后的修改并非完全不可以,题目中的内容是可以改动的,即便是表达式之类的(阵列题型可增删和修改答案,不能增删子问题但能修改子问题内容)。


目前只想到上面的内容,以后想到再补充吧。

最后修改:2024 年 01 月 23 日
如果觉得我的文章对你有用,请随意赞赏