关于php:学习PHP中统计扩展函数的使用

6次阅读

共计 3204 个字符,预计需要花费 9 分钟才能阅读完成。

做统计相干零碎的敌人肯定都会学习过什么正态分布、方差、标准差之类的概念,在 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)/4
var_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)

平均数对于很多统计计算都很有用,是很多算法的根本数据之一。所以咱们先筹备好一个平均数,次要是为了咱们前面的手动计算应用。其实,方差和标准差也是很多其它计算的根底数据。

stats_variance() 函数就是用于计算一组数据的方差。它接管的是一个数组参数,计算的内容也就是数据外面数据的值。对于方差的公式其实就是每一个数据减去平均数当前平方,而后全副加起来之后再除以数据的数量。

能够看到计算的后果和咱们间接调用 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.25

stats_absolute_deviation() 函数用于计算平均偏差,其实下面的概念就是我在正文中写的公式。每个数据减平均数之后的绝对值再除以数据数量就能够了,间接看公式是不是比下面的概念要清晰很多。同样,咱们再看下调和平均数。

// 和谐平均数
var_dump(stats_harmonic_mean([1, 3, 9, 12])); // float(2.6181818181818)
// 4/(1/1+1/3+1/9+1/12) = 2.6181818181818

stats_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

各自媒体平台均可搜寻【硬核项目经理】

正文完
 0