Foxtable(狐表)用户栏目专家坐堂 → [求助]如何计算标准分


  共有20649人关注过本帖树形打印复制链接

主题:[求助]如何计算标准分

帅哥哟,离线,有人找我吗?
紙上不談兵
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:113 积分:731 威望:0 精华:1 注册:2011/8/16 14:13:00
  发帖心情 Post By:2011/9/5 15:25:00 [显示全部帖子]

文字一大堆,图片看不见.

 回到顶部
帅哥哟,离线,有人找我吗?
紙上不談兵
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:113 积分:731 威望:0 精华:1 注册:2011/8/16 14:13:00
  发帖心情 Post By:2011/9/5 15:48:00 [显示全部帖子]

做个简洁的例子上来,配简洁说明

 回到顶部
帅哥哟,离线,有人找我吗?
紙上不談兵
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:113 积分:731 威望:0 精华:1 注册:2011/8/16 14:13:00
  发帖心情 Post By:2011/9/5 18:30:00 [显示全部帖子]

在网上搜寻了一个,不知是否你所需?俺也不知怎用.
Function  NormDist(ByVal x As Double, ByVal  mean As Double, ByVal sd As  Double) As Double     
'均值mean,标准差sd的正态曲线函数   
      Dim  res  As Double = 0.0 
      res  = 1 / sd / Math.Sqrt(8 * Math.Atan(1)) 
      res  = Math.Exp((x - mean)^ 2 / -2 / sd^ 2) * res 
      Return  res 
End   Function

 回到顶部
帅哥哟,离线,有人找我吗?
紙上不談兵
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:113 积分:731 威望:0 精华:1 注册:2011/8/16 14:13:00
  发帖心情 Post By:2011/9/6 11:00:00 [显示全部帖子]

以下是引用易服在2011-9-5 22:37:00的发言:

 

 下载信息  [文件大小:308.0 KB  下载次数:3]
图片点击可在新窗口打开查看点击浏览该文件:成绩管理系统.table

  例如:某中学高(1)班期末考试,已知语文期末考试的全班平均分为73分,标准差为7分,甲得了78分;数学期末考试的全班平均分为80分,标准差为6.5分,甲得了83分。甲哪一门考试成绩比较好?

  因为两科期末考试的标准差不同,因此不能用原始分数直接比较。需要将原始分数转换成标准分数,然后进行比较。

Z(语文)=(78-73)/7=0.71
Z(数学)=(83-80)/6.5=0.46
  

1.标准差怎确定?

2.你的例子中甲语文的标准分=100*(78-73)/7+500=571?




 回到顶部
帅哥哟,离线,有人找我吗?
紙上不談兵
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:113 积分:731 威望:0 精华:1 注册:2011/8/16 14:13:00
  发帖心情 Post By:2011/9/6 14:34:00 [显示全部帖子]

Dim dr As DataRow
Dim ft,Lm As String
Dim μ,σ,sum As Double
Dim Arys As List(of String())
Dim drs As New List(of DataRow)
Dim dt As DataTable =DataTables("转换标准分")
Dim Ls As String() = {"语文","数学","英语","物理","化学","总分"}

Arys = dt.GetUniqueValues("","期数","班级")
For Each Ary As String() In Arys   
    ft = "期数 ='" & Ary(0) & "'And 班级 = '" & Ary(1) & "'"   
    drs =dt.Select(ft)
    For Each Lm In Ls
        sum = dt.Compute("sum(" & Lm & ")",ft)
        μ =sum/drs.count
        
        sum=0
        For Each dr  In drs
            sum+=(dr(Lm)-μ)^2
        Next
        σ =Math.Sqrt(sum/drs.count)

        For Each dr In drs
            dr(Lm & "_标准分")=(dr(Lm)-μ)/σ
        Next
    Next
Next
[此贴子已经被作者于2011-9-6 15:58:42编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
紙上不談兵
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:113 积分:731 威望:0 精华:1 注册:2011/8/16 14:13:00
  发帖心情 Post By:2011/9/6 15:29:00 [显示全部帖子]


 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:成绩管理系统.table


 回到顶部
帅哥哟,离线,有人找我吗?
紙上不談兵
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:113 积分:731 威望:0 精华:1 注册:2011/8/16 14:13:00
  发帖心情 Post By:2011/9/7 8:04:00 [显示全部帖子]

以下是引用bohe在2011-9-5 14:43:00的发言:


3.应用举例

假设该年级学生共有500人,在第2行至501行中,在H2单元格单击,输入公式:=100*NORMSINV(((RANK(D2,D$2:D$501,1)-1)/(COUNTA(D$2:D$501))))+500后回车,如果输入无误,可看到该单元格按照语文原始分转化出来的语文标准分。由于函数NORMSINV(0)返回的值是“#NUM!”(在以上公式中,就是最低分考生),而标准分最低分是100分,因此,进行标准分转换时,在显示 “#NUM!”的单元格上,必须手工把它改为100。

 


加個If就不用手工更改了:


=IF(RANK(D2,D$2:D$501,1)=1,100,100*NORMSINV(((RANK(D2,D$2:D$501,1)-1)/(COUNTA(D$2:D$501))))+500)



 回到顶部
帅哥哟,离线,有人找我吗?
紙上不談兵
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:113 积分:731 威望:0 精华:1 注册:2011/8/16 14:13:00
  发帖心情 Post By:2011/9/8 8:30:00 [显示全部帖子]

以下是引用gdlgh在2011-9-6 10:13:00的发言:

呵.这样调用

 

Dim objExcel As Object = CreateObject("Excel.Application")
Dim i As Integer = objExcel.NORMSINV(2)
Dim i2 As Integer = objExcel.RANK(10,1)
Dim i3 As Integer = objExcel.COUNTA(10)


msgbox(i & "," & i2 & "," & i3)


gdlgh大神这个调用方法虽可行,但效率好似低点


 回到顶部