摘要 减少缺失数据是提高“问卷有效率”的重要环节。本文主要根据统计分析的要求,从技术角度微观地探讨如何在ASP中利用数据库技术防止缺失数据,即通过Recordset对象中Fields集合的字段名(Fields().Name)与网络问卷表单的对象名(Name)进行关联,巧妙地优化缺失数据校验程序,从而设计出更简洁、灵活且不受问卷试题规模影响的校验程序,增强了WEB问卷的通用性,提高了“问卷有效率”,起到事半功倍的效果。关键词 WEB问卷,缺失数据校验程序,ASP 网络调查具有传统纸质调查无法比拟的优越性,因此在现实调查工作中被广泛运用。但与传统的纸质调查一样,网络调查的质量受问卷试题设计、抽样方案、问卷回收率和“问卷有效率”[1]等因素的制约。一旦利用技术手段对各环节进行合理的优化,网络调查就能够突破诸多因素的制约,提高调查效率和质量。其中,防止缺失数据[2]是提高“问卷有效率”的重要环节。 1 网络调查与缺失数据 随着网络调查的推广,许多学者从技术角度宏观地探讨了网络调查,满孝[3]和王骏[4]分别介绍了ASP设计调查引擎和网络调查系统的设计;郭强主编的《网络调查手册》[5]比较详细地介绍了用ASP设计社会调查;何清林[6]实现了“网络问卷调查分析系统”的动态生成。但在实践操作中,还会涉及许多不容忽视的微观问题,如缺失数据问题。 统计学所指的缺失数据就是漏填数据项[2]。在网络调查中,缺失数据主要是被调查者在按了“提交”按钮时仍有试题没填或只填了空格所造成的。这样所造成的空缺数据直接影响 “问卷有效率”,进而影响分析结果。此外,有些系统(如ASP)在将空数据存入数据库时就会产生错误。因而缺失数据是个不容忽视的问题。 一般来说,要避免缺失数据就需编写程序对每个数据项进行校验。小型WEB问卷通常利用JavaScript程序在客户端对每一试题所对应的元素逐一进行校验,全部合法后方能实现对服务器的提交操作。按此算法,所提交的表单中包含有n对象,则在JavaScript程序中就至少需要n个判断。如果大型WEB问卷也如法炮制,设计者的工作量无疑会与问卷规模成比例增加。合理选择算法对设计者方能起到事半功倍的效果。 本文主要根据统计分析的要求,从技术角度微观地探讨如何在ASP中利用数据库技术防止缺失数据。从而设计出不受问卷规模影响的校验程序。 2 大型WEB问卷缺失数据校验的常见算法 对于大型WEB问卷调查的设计,必须优化算法,否则会在程序的书写上浪费大量时间。通常的算法是根据问卷自身特点进行处理。2.1基于里克特量表(Likert Scales)形式的问卷 里克特量表是现代调查研究中普遍被采用的一种测量量表[1],它的基本形式是给出一组陈述,然后要求调查对象表明态度。根据每题所提供答案的个数,又可分为里克特两点量表、三点量表、四点量表、五点量表、六点和七点量表。基于这种量表而制成的问卷其主体呈现出极强的规律性,即每题都是单选且每题预置答案均为n(2≤n≤7)个。因而根据这种特点,在基于B/S模式的网络问卷的规划时,利用JavaScript设计两重循环在客户端就可检验缺失数据问题。程序如下:
<script language="JavaScript"> | |
Var m=50; | ‘试题总量 |
Var n=5; | ‘每道试题的预置答案数目 |
function checkradio() | |
{var yesno | ‘当前试题无缺失时为1,否则为0 |
var i=0 | |
for (i=0;i<m;i++) | |
{yesno=0 | ‘每个试题开始检测时均假设为缺失 |
for(var j=0;j<n;j++) | |
{if (document.forms[0].elements[i*5+j].checked) | ‘如果当前试题有答案被选中时 |
{yesno=1;break;} | ‘标识为无缺失 |
} | |
if (yesno==0) | ‘如果此题出现数据缺失时 |
Break; | ‘停止检测 |
} | |
if (i<m) | ‘m道题中有一个试题出现缺失数据 |
{window.confirm("每个题都要求选择,您第"+(i+1)+"题没选,请选择!"); } | ‘提示出现缺失数据的题号 |
else | ‘无缺失数据则将数据发送给ASP处理 |
{ | |
document.form1.method="post" | |
document.form1.action="survey.asp" | |
document.form1.submit() | |
} | |
} | |
</script> |
[8]电大学习网.免费论文网[EB/OL]. /d/file/p/2024/0424/fontbr />步骤一:设计数据库中表的字段,保证字段名与相应的对象名一致。比如字段为“a1”则相对应的表单中的对象名也需设置为“a1”;
nameString="(" | ‘insert 语句的字段列表 |
valueString="(" | ‘insert语句与字段相对应的值的列表 |
for i=1 to N | ‘N为A组对象的个数 |
nameString = nameString &"a"&i&"," | |
if len(request.form("a"&i))>0 then | ‘A组的变量名均a开头 |
valueString=valueString&"'"&request.form("a"&i)&"'," | ‘填写或选择了的值为实际值 |
else | |
valueString=valueString&"'/'," | ‘没有填或选的均存为”/”记号 |
end if | |
next |
论文检测天使-免费论文相似性查重http://www.jiancetianshi.com
二、对字串变量valueString最后的”,”要进行处理。步骤三:在与数据库实现连接后,利用RecordSet对象将记录存储到临时表temp中:sqlstr="insert into temp "&nameString&" values "&valueString ‘temp为临时表set rs=db.execute(sqlstr) 步骤四:根据第二步设置可知,凡值为“/”的便是缺失数据。我们只需利用VBScript对临时数据库的各数据项进行判断并作出相应处理即可。 3新的算法:利用Fields集合进行优化 以上方法虽可行,但仍很烦琐。下面我们讨论一种更简洁、更灵活、更通用的方法,即利用Recordset对象中Fields集合的字段名(Fields().Name)与网络问卷表单的对象名(Name)进行关联来实现。 步骤一:建立表单和数据库,将表单的对象名(name或ID)与数据库中表的字段名一一对应(和上面的步骤一相同)。凡要求进行缺失数据校验的变量(有些对象充许缺失,比如复选对象)和相应的字段名其首字母均设置为“a”,如a1,a2等,无须判断的对象所对应的变量和字段名的首字母则为其它,如b1,b2等。 步骤二:编写缺失数据校验程序
<%’ 连接数据库并建立Recordset对象实例rs | ‘省略 |
ok=1 | ‘无缺失数据为1,否则为0 |
a="a" | ‘凡要求检测的变量其首字母为a |
for i=1 to rs.fields.count-1 | ‘字段个数决定判断次数 |
c=mid(rs.fields(i).name,1,1) | ‘取每个字段名的首字母 |
if len(trim(request(rs.fields(i).name)))=0 and strcomp(c,a)=0 then | ‘字段名即表单对象名,建立关联 |
‘如果首字母为”a”且有缺失数据 | |
response.write "第"&cstr(i)&"项没有填数据!<br>" | ‘显示缺失数据的题号 |
ok=0 | ‘标识为缺失状态 |
end if | |
next | |
if ok=0 then | ‘如果有非法缺失数据 |
response.write "<br><input type=button value=返回 | ‘显示返回 |
onclick=history.go(-1)>" | |
else | ‘如果无非法缺失数据,校验成功 |
'正常处理程序 | ‘正常处理随后程序 |
end if | |
%> |
[8]电大学习网.免费论文网[EB/OL]. /d/file/p/2024/0424/fontbr />
相关文章:
《白鹿原》人物性格中的中国哲学理性精神04-26
高等教育经济效益的影响因素分析04-26
中医辨证施护应用于干眼症患者的效果分析04-26
探究商业地产营销策划的现状问题与优化措施04-26
疫情下高校体育教学的不足和应对措施探究04-26
伊力特白酒公司盈利模式的问题与建议探究04-26