做统计相关系统的朋友一定学过正态分布、方差、标准差等概念。在PHP中,也有专门针对这些统计相关系统的相应扩展函数。功能开发。我们今天要学习的stats扩展函数库就是这样一个运算函数。当然,我自己也没有做过类似的系统,对这些概念了解不多,所以今天所学的内容只是基于个人的理解和一些接触过的内容。不过据说Python在这方面相对来说更强大一些。毕竟它是一门通用的胶水语言,也是一门在统计领域取得成功后逐渐被大众所接受的语言。感兴趣的同学可以自行研究。stats扩展的安装也很简单,直接使用普通的扩展安装方法即可。并且不需要其他系统额外组件的支持,非常方便。0-1之间的随机数首先,我们来看一个与统计关系不大的函数。var_dump(stats_rand_ranf());//float(0.32371053099632)正常的rand()和mt_rand()函数返回从0到getrandmax()的整数。而这个stats_rand_ranf()返回的是一个0到1之间的小数。除了这个函数之外,还有其他以stats_rand_开头的函数,用于返回正态分布等随机值。如果对统计有一定的了解,可以自行参考文档。方差、标准差方差和标准差这两个概念应该比较简单通用。比如我真正的专业是心理学。心理统计学里面有方差和标准差的计算,也是考试必考的。不过,这一段的内容也很简单。使用函数后,我们还会用自己的计算代码来展示方差和标准差的计算公式。//1,3,9,12//平均值:(1+3+9+12)/4=6.25//方差var_dump(stats_variance([1,3,9,12]));//float(19.6875)//方差公式:(1-6.25)^2+(3-6.25)^2+(9-6.25)^2+(12-6.25)^2)/4var_dump((pow(1-6.25,2)+pow(3-6.25,2)+pow(9-6.25,2)+pow(12-6.25,2))/4);//float(19.6875)average对很多统计计算很有用,是很多算法的基础数据之一。所以我们先准备一个平均值,主要是为了后面我们手动计算。事实上,方差和标准差也是很多其他计算的基础数据。stats_variance()函数用于计算一组数据的方差。它接收一个数组参数,计算的内容是data中数据的值。方差的公式其实就是每个数据的平方减去均值,然后相加除以数据个数。可以看出计算结果和直接调用stats_variance()函数的结果是一样的。//标准偏差var_dump(stats_standard_deviation([1,3,9,12]));//float(4.4370598373247)var_dump(stats_standard_deviation([1,3,9,12],true));//float(5.1234753829798)//标准偏差:平方根((1-6.25)^2+(3-6.25)^2+(9-6.25)^2+(12-6.25)^2)/4)//样本标准偏差:开方((1-6.25)^2+(3-6.25)^2+(9-6.25)^2+(12-6.25)^2)/(4-1))var_dump(sqrt((pow(1-6.25,2)+pow(3-6.25,2)+pow(9-6.25,2)+pow(12-6.25,2))/4));//float(4.4370598373247)var_dump(sqrt((pow(1-6.25,2)+pow(3-6.25,2)+pow(9-6.25,2)+pow(12-6.25,2))/3));//float(5.1234753829798)的标准差的计算其实就是方差结果的平方根再除以数据个数。它有两种形式,一种是直接除以数量,另一种是除以数量减一,分别称为标准差和样本标准差。可以看到直接使用stats_standard_deviation()并指定它的第二个参数可以很方便的切换这两个标准差的计算结果。而且比手算方便多了。平均偏差、调和平均偏差和阶乘平均偏差一般是指序列中各值与其算术平均值之间偏差的绝对值的算术平均值。天啊,这个概念好难读啊,学统计学的朋友,你们还好吗?当然,stats扩展中的一个函数可以解决问题。//平均偏差var_dump(stats_absolute_deviation([1,3,9,12]));//4.25//((6.25-1)+(6.25-3)+(9-6.25)+(12-6.25))/4//(5.25+3.25+2.75+5.75)/4=4.25stats_absolute_deviation()函数用于计算平均偏差。其实上面的概念就是我在评论里写的公式。只需将每个数据减去平均值后的绝对值除以数据个数,看看公式是不是比上面的概念清楚很多。同样,让我们??看看降级和平均水平。//谐波平均值var_dump(stats_harmonic_mean([1,3,9,12]));//float(2.6181818181818)//4/(1/1+1/3+1/9+1/12)=2.6181818181818stats_harmonic_mean()用于计算一组数据的调和平均值。从下面注释的计算公式可以看出吗?调和平均数是将每个数据的倒数相加,然后用数据个数除以倒数之和得到的结果。最后,这里有一个更轻的,一个可以直接计算阶乘结果的函数。var_dump(stats_stat_factorial(6));//float(720)//1*2*3*4*5*6=720相信这个函数不需要解释了。其实我从来没有接触过峰度、偏度、累积正态分布函数、概率密度这些概念。只是测试一下功能码能不能用。有很多相关的功能。比如这里我们只是一些正态分布相关的函数,还有F分布、t分布、柯西分布、卡方分布等相关的计算函数。我承认我只听说过一两个名字,还有很多我什至没听说过。//峰度var_dump(stats_kurtosis([1,3,9,12]));//float(-1.6960846560847)//偏度var_dump(stats_skew([1,3,9,12]));//float(0.091222998923078)//返回正态分布的累积分布函数,它的反函数,或者它的一个参数var_dump(stats_cdf_normal(14,5,10,1));//返回第一个的概率密度参数var_dump(stats_dens_normal(14,5,10));其他各种分布相关的计算函数,需要的可以参考相关文档。综上所述,在看官方文档之前,我真的不知道我们在PHP中已经有了这样的扩展。我当时还在想,如果真要做一个类似的统计系统,用PHP,会很麻烦,所以大家会选择其他语言。事实上,这些扩展已经存在了很长时间。好不好不用我说,但是用PHP做这种统计系统的例子不太多。如果你需要什么,你仍然需要做更多的研究。而这种计算实际上是各种公式的混合。相信Composer中有很多好用的框架,我们不需要在系统中单独安装扩展就可以使用。测试代码:https://github.com/zhangyue0503/dev-blog/blob/master/php/202012/source/10。了解PHP中统计扩展函数的使用。PHP参考文档:https://www.php。net/manual/zh/book.stats.php各媒体平台均可搜索【硬核项目经理】
