以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]选做题区分度的计算  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=134189)

--  作者:cqlpjks
--  发布时间:2019/4/29 12:20:00
--  [求助]选做题区分度的计算

小题分分析程序调试

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:小题分分析程序调试.rar


 


图片点击可在新窗口打开查看此主题相关图片如下:理数调试.jpg
图片点击可在新窗口打开查看
如何修改选做题(选做22题、选做23题)的区分度计算代码,请指教。谢谢!

 

If Lx = "客观题"  Then
    dr("难度") = dr("满分人")/dr("参考人数")
    dr("区分度") = (c4-c5)/c2
ElseIf Lx = "主观题"  Then
    dr("难度") = dr("平均分")/c1
    If dr("题型").Contains("选做") Then
        Dim c31 As Integer = DataTables(Km).Compute("count(单位)","选做 = \'"& dr("题型") &"\'")
        Dim c21 As Integer = c31*0.27
        Dim c22 As Integer = c31*0.73
        Dim tj1 As String = Km & "选做题名次"
        Dim c23 As Double = DataTables(Km).Compute("Sum("& dr("题号") &")","" & tj1 & " <= \'" & c21 & "\'") \'选做题高分组得分之和
        Dim c24 As Double = DataTables(Km).Compute("Sum("& dr("题号") &")","" & tj1 & " >= \'" & c22 & "\'") \'选做题低分组得分之和
        dr("区分度") = (c23-c24)/c21/(dr("最大值")-dr("最小值")) \'高低分组得分的和之差/总人数27%/(最高分-最低分)
    Else
        dr("区分度") = (c6-c7)/c2/(dr("最大值")-dr("最小值")) \'高低分组得分的和之差/总人数27%/(最高分-最低分)
    End If
Else
End If

[此贴子已经被作者于2019/4/29 12:22:08编辑过]

--  作者:有点甜
--  发布时间:2019/4/29 13:05:00
--  

不理解你的逻辑。

 

请你弹出你各个值看一下,和你手工计算对比,看哪个值不正确。

 

msgbox(c23)

msgbox(c24)

msgbox(c21)

msgbox(dr("最大值")-dr("最小值"))


--  作者:cqlpjks
--  发布时间:2019/4/30 17:04:00
--  

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:理数小题分分析表1.xls

统计此表中列“难度”、“区分度”:卷二 = 主观题平均分(序号13-19)   理数 = 主、客观题的平均分(序号1-19)

代码:

卷二:

dr("难度") = Tables(Km & "小题分析").Aggregate(AggregateEnum.Average, 12, r, 18, r)
dr("区分度") = Tables(Km & "小题分析").Aggregate(AggregateEnum.Average, 12, q, 18, q)

理数:

dr("难度") = Tables(Km & "小题分析").Aggregate(AggregateEnum.Average, 0, r, 18, r)
dr("区分度") = Tables(Km & "小题分析").Aggregate(AggregateEnum.Average, 0, q, 18, q)

执行结果有误,怎么修改代码?请指教。谢谢!

 

卷一统计没问题:

dr("难度") = Tables(Km & "小题分析").Aggregate(AggregateEnum.Average, 0, r, 11, r)
dr("区分度") = Tables(Km & "小题分析").Aggregate(AggregateEnum.Average, 0, q, 11, q)

[此贴子已经被作者于2019/4/30 17:10:56编辑过]

--  作者:有点甜
--  发布时间:2019/4/30 17:24:00
--  

请用compute比较,如

 

Tables(Km & "小题分析").compute("avg(题号)", "题号>=13 and 题号<=19")