Foxtable(狐表)用户栏目专家坐堂 → [求助]关于正态曲线函数的应用(已解决)


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

主题:[求助]关于正态曲线函数的应用(已解决)

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


加好友 发短信
等级:七尾狐 帖子:1530 积分:10633 威望:0 精华:0 注册:2008/9/24 11:16:00
[求助]关于正态曲线函数的应用(已解决)  发帖心情 Post By:2016/4/19 20:26:00 [只看该作者]

网上找到一个正态曲线函数,已知标准偏差、均值和分组值,如何应用这个函数,计算正态曲线系数,并将其填充到正态分布表的概率系数列,请各位老师指教,谢谢!!

下面这个函数可以替代Excel中的NORMDIST函数。

'均值mean,标准差sd的正态曲线函数
Function NormDist(ByVal x As Double, ByVal mean As Double, ByVal sd As Double) As Double
   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

式中:
sd = 标准偏差
mean = 均值
X = 分组值

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目19.rar



[此贴子已经被作者于2016/4/19 21:11:01编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/4/19 20:32:00 [只看该作者]

 什么怎么用,带入数据就行啊。

 

 全局代码

 

Public Function NormDist(ByVal x As Double, ByVal mean As Double, ByVal sd As Double) As Double
   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
 
 调用
 
Dim d As Double = NormDist(1, 2, 3)

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


加好友 发短信
等级:七尾狐 帖子:1530 积分:10633 威望:0 精华:0 注册:2008/9/24 11:16:00
  发帖心情 Post By:2016/4/19 20:44:00 [只看该作者]

谢谢大红袍老师,如果均值变量为“jz”,标准偏差变量为“bzpc”,分组值为dr("分组值"),如何计算正态曲线系数,并将其填充到正态分布表的概率系数列,概念不太清楚,请大红袍老师赐教,谢谢!!



 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/4/19 20:56:00 [只看该作者]

 代入值,就算出和返回了啊

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


加好友 发短信
等级:七尾狐 帖子:1530 积分:10633 威望:0 精华:0 注册:2008/9/24 11:16:00
  发帖心情 Post By:2016/4/19 21:11:00 [只看该作者]

谢谢大红袍老师,已经解决,代码如下:

dr("概率系数") = NormDist(dr("分组值"), pjz, bzpc)

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


加好友 发短信
等级:七尾狐 帖子:1578 积分:13038 威望:0 精华:0 注册:2009/6/16 7:30:00
  发帖心情 Post By:2021/6/1 12:46:00 [只看该作者]

Public Function NormDist(ByVal x As Double, ByVal mean As Double, ByVal sd As Double) As Double
Dim x2 As Double = (x - mean) / sd
If X2 = 0 Then
    Return 0.5
Else
    Dim oor2pi As Double = 1 / Math.Sqrt(2.0 * Math.PI)
    Dim t As Double = 1 / (1.0 + 0.2316419 * Math.Abs(x2))
    t = t * oor2pi * Math.Exp(-0.5 * x2 * x2) * (0.31938153 + t * (-0.356563782 + t * (1.781477937 + t * (-1.821255978 + t * 1.330274429))))
    If (x2>0)
        Return 1.0 - t
    Else
        Return t
    End If
End If
End Function

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


加好友 发短信
等级:七尾狐 帖子:1578 积分:13038 威望:0 精华:0 注册:2009/6/16 7:30:00
  发帖心情 Post By:2021/6/1 12:46:00 [只看该作者]

经过一上午的测试,证明原函数是错误的。正态分布计算分享给大家。

 回到顶部