PHP实现正态分布的累积概率函数
在实际项目中,遇到需要正态分布算法去计算一个数值在整体的分布区间,例如:
<?php
/**
* php 实现excel的normdist函数
*
* 使用方法:
$list = array(1.09,1.50,1.31,1.44);
$normdist = new normdist($list);
echo $normdist->getCdf($list[0]);
*/
class normdist { public $list = array();
public $mu;
public $sigma; public function __construct($list)
{
$this->list = $list;
$this->mu = $this->getMu($list); // 获取平均值
$this->sigma = $this->getSigma($list); // 获取标准偏差
} /**
* @name 正态分布的累积概率函数
* @param string|integer $value
* @return number
*/
public function getCdf($value)
{
$mu = $this->mu;
$sigma = $this->sigma;
$t = $value - $mu;
$y = 0.5 * $this->erfcc(-$t / ($sigma * sqrt(2.0)));
if ($y > 1.0) $y = 1.0; return $y;
} private function erfcc($x)
{
$z = abs($x);
$t = 1. / (1. + 0.5 * $z);
$r =
$t * exp(-$z*$z-1.26551223+
$t*(1.00002368+
$t*(.37409196+
$t*(.09678418+
$t*(-.18628806+
$t*(.27886807+
$t*(-1.13520398+
$t*(1.48851587+
$t*(-.82215223+
$t*.17087277)))))))));
if ($x >= 0.)
return $r;
else
return 2 - $r;
} /**
* @name 获取平均值
* @param array $list
* @return number
*/
private function getMu($list)
{
return array_sum($list) / count($list);
} /**
* @name 获取标准差
* @param array $list
* @return number
* @beizhu 标准差 = 方差的平方根
*/
private function getSigma($list)
{
$total_var = 0;
foreach ($list as $v) {
$total_var += pow( ($v - $this->getMu($list)), 2);
} return sqrt( $total_var / (count($list) - 1 )); // 这里为什么数组元素个数要减去1
}
}
PHP实现正态分布的累积概率函数的更多相关文章
- 标准正态分布表(scipy.stats)
0. 标准正态分布表与常用值 Z-score 是非标准正态分布标准化后的 x即 z=x−μσ" role="presentation">z=x−μσz=x−μσ 表 ...
- 正态分布(Normal distribution)又名高斯分布(Gaussian distribution)
正态分布(Normal distribution)又名高斯分布(Gaussian distribution),是一个在数学.物理及project等领域都很重要的概率分布,在统计学的很多方面有着重大的影 ...
- 截断正态分布(Truncated normal distribution)
Truncated normal distribution - Wikipedia Normal Distribution 称为正态分布,也称为高斯分布,Truncated Normal Distri ...
- QM5_Didstribution
Basic Concepts Probability distribution Discrete distribution (离散分布) The distribution of the discret ...
- numpy-Randow
Randow使用 http://blog.csdn.net/pipisorry/article/details/39508417 概率相关使用 转:http://www.cnblogs.com/Nau ...
- (邹博ML)数学分析与概率论
机器学习入门 深度学习和机器学习? 深度学习在某种意义上可以认为是机器学习的一个分支,只是这个分支非常全面且重要,以至于可以单独作为一门学科来进行研究. 回忆知识 求解S. 对数函数的上升速度 我们使 ...
- Clustering by density peaks and distance
这次介绍的是Alex和Alessandro于2014年发表在的Science上的一篇关于聚类的文章[13],该文章的基本思想很简单,但是其聚类效果却兼具了谱聚类(Spectral Clustering ...
- Excel教程(13) - 统计函数
AVEDEV 用途:返回一组数据与其平均值的绝对偏差的平均值,该 函数可以评测数据(例如学生的某科考试成绩)的离散度. 语法:AVEDEV(number1,number2,...) 参数:Number ...
- Gauss error function
0. error function erf(x)=1π∫−xxe−t2dt" role="presentation">erf(x)=1π−−√∫x−xe−t2dte ...
随机推荐
- sql中内联 和外联 区别
sql中内联 和外联 区别 2007-05-15 17:37 这个概念一般看书不好理解.其实夜简单.有例子就简单了. 比如: 表A(主表) cardid username 16 aa 23 bb 25 ...
- 2-6 Flutter开发环境与Android开发环境设置实操(Windows)
通常安装完AS后,sdk的目录 C:\Users\wjw\AppData\Local\Android\sdk 如果在这个目录下没有找到sdk的目录的话 Settings里面搜索sdk,找到Androi ...
- gin-swagger包Api文档生成, Post请求参数无法接收, 问题修复。
Bug描述 FormData方式下,任意参数类型都只生成file参数类型. 问题重现 问题代码在这一行 github.com\swaggo\swag\operation.go : 131 line c ...
- 将Opencv java中的Mat通过jni传递到C++中的方法
public native void FindFeatures(long matAddrGr, long matAddrRgba); ... mRgba = new Mat(height, width ...
- 2014年第五届蓝桥杯国赛试题(JavaA组)
1.结果填空 (满分15分)2.结果填空 (满分45分)3.代码填空 (满分30分)4.程序设计(满分30分)5.程序设计(满分80分)6.程序设计(满分100分) 1.标题:海盗分金币 有5个海盗, ...
- 【原】spring+springmvc+mybatis整合
整合框架的代码结构: 最全约束: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns=&q ...
- Spring Security 表达式(Expressions) - hasRole示例
1.概述 Spring Security使用强大的Spring Expression Language(SpEL)提供各种各样的表达式.大多数这些Security表达式是针对上下文对象(当前经过身份验 ...
- SCUT - 278 - 谜题#020 - 左偏树
https://scut.online/p/278 第一次遇到不需要并查集的左偏树. #include<bits/stdc++.h> using namespace std; typede ...
- 洛谷 - P3952 - 时间复杂度 - 模拟
https://www.luogu.org/problemnew/show/P3952 这个模拟,注意每次进入循环的时候把新状态全部入栈,退出循环的时候就退栈. 第一次就错在发现ERR退出太及时,把剩 ...
- Solr highlight
hl.preserveMulti 默认是false.Set to true to perform highlighting on all values of a multivalued field a ...