加入收藏
设为首页
关于我们
您现在的位置: 101美术高考网 >> 论文中心 >> 计算机 >> 计算机理论 >> 文章正文
  关于WEB问卷缺失数据校验程序的优化研究         ★★★★
关于WEB问卷缺失数据校验程序的优化研究
作者:101ms.com 文章来源:中国论文下载中心 点击数: 更新时间:2008-5-7 10:56:26

摘要  减少缺失数据是提高“问卷有效率”的重要环节。本文主要根据统计分析的要求,从技术角度微观地探讨如何在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>
 
2.2 针对混合形式的问卷
       问卷形式往往不只包含某一类型的单选对象而是混合型的。这时就需要先将各种类型的对象进行分组(这样做也有利于数据的存储程序的编写)。比如将两点形式的分为A类(对象名则为a1,a2,a3…),三点形式的分为B类(对象名则为b1,b2,b3…),复选按钮为C类(对象名则为c1,c2,c3…)等。在分类时为了便于程序编写,不得不将同类型的对象安排在一起。然后用上述方法进行处理。
       当然,对于混合形式的问卷,较好的算法还可将数据暂时存入Cookies、临时文本文件或临时数据库中的表中,然后通过ASP的VBScript程序进行校验处理。这样就没必要在物理上将同类型的对象安排在一起,而只要将同质的对象逻辑分组命名即可。
       以暂存于临时数据库的表为例,在添加数据时,考虑试题数量所造成变量列表过长,即书写SQL的insert语句过长的问题,我们可以用以下方法实现:(以某A组为代表)
     

步骤一:设计数据库中表的字段,保证字段名与相应的对象名一致。比如字段为“a1”则相对应的表单中的对象名也需设置为“a1”;
     步骤二:通过下例程序将A组所有对象的名(name)组成一个串,并将所对应的值(value)也组成一个串。(省略了数据库连接操作)
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
 
      以上程序需注意两个问题:一、数据库的字段类型均设为字符型或文本型,否则会程序因为数据类型不匹配而出错;二、对字串变量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
 
%>
 
       程序中标识了下划线那条语句是整个程序的核心,不仅解决了漏填所造成的缺失数据而且还避免了文本对象中仅填空格所引起的空缺数据。其极强的通用性,满足了各种形式和各种规模的网络问卷的要求。
 
4结束语
       以上程序均在实际调查研究中得以应用,并将Fields集合优化的程序成功地进行了移植,从而优化了网络问卷校验程序,提高了“问卷有效率”。
 
1李克东编著.教育技术学研究方法[M]. 北京:北京师范大学出版社,2003:118
2薛薇.SPSS统计分析方法及应用[M].北京:电子工业出版社,2004:22
3 满孝.用ASP建立调查引擎[J].计算机世界,2000
4 王骏.用ASP开发网络调查系统[J].合肥学院学报,2005
5 郭强.网络调查手册[M].北京:中国时代经济出版社,2004
6 何清林.基于ASP.NET实现“网络问卷调查分析系统”的动态生成[J].计算机系统应用,2005.12
7 尚俊杰.网络程序设计-ASP[M].北京:清华大学出版社,2003.8


文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章: 没有了
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    专 题 栏 目
    最 新 热 门
    最 新 推 荐
    相 关 文 章
    没有相关文章
    | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 网站公告 |
    Copyright © 2006 All Rights Reserved 中国美术高考网(国内最专业的美术高考门户网) 版权所有 未经允许 不得转载!
    网站咨询/管理员:101msw#163.com, 网站编辑/作品投稿/简章发布:101msw#163.com
    为防止垃圾邮件,请将"#"改为"@",编辑QQ:362058177 联系电话:13705952125