PHP 中的 z 分数(标准差和平均值)

发布于 2024-10-26 05:14:45 字数 114 浏览 1 评论 0原文

我正在尝试使用 PHP 计算 Z 分数。本质上,我正在寻找计算数据集(PHP 数组)的平均值和标准差的最有效方法。关于如何在 PHP 中执行此操作有什么建议吗?

我正在尝试以最少的步骤来完成此操作。

I am trying to calculate Z-scores using PHP. Essentially, I am looking for the most efficient way to calculate the mean and standard deviation of a data set (PHP array). Any suggestions on how to do this in PHP?

I am trying to do this in the smallest number of steps.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

离线来电— 2024-11-02 05:14:45

要计算您可以执行的平均值:

$mean = array_sum($array)/count($array)

标准差如下所示:

// Function to calculate square of value - mean
function sd_square($x, $mean) { return pow($x - $mean,2); }

// Function to calculate standard deviation (uses sd_square)    
function sd($array) {
    // square root of sum of squares devided by N-1
    return sqrt(array_sum(array_map("sd_square", $array, array_fill(0,count($array), (array_sum($array) / count($array)) ) ) ) / (count($array)-1) );
}

立即 此页面

to calculate the mean you can do:

$mean = array_sum($array)/count($array)

standard deviation is like so:

// Function to calculate square of value - mean
function sd_square($x, $mean) { return pow($x - $mean,2); }

// Function to calculate standard deviation (uses sd_square)    
function sd($array) {
    // square root of sum of squares devided by N-1
    return sqrt(array_sum(array_map("sd_square", $array, array_fill(0,count($array), (array_sum($array) / count($array)) ) ) ) / (count($array)-1) );
}

right off this page

溺深海 2024-11-02 05:14:45

如何使用内置的统计包,例如 stats_standard_deviationstats_harmonic_mean。我找不到标准均值的函数,但如果您了解统计知识,我相信您可以使用内置函数计算出一些结果。

How about using the built in statistics package like stats_standard_deviation and stats_harmonic_mean. I can't find a function for standard means, but if you know anything about statistics, I'm sure you can figure something out using the built-in functions.

樱花落人离去 2024-11-02 05:14:45
   function standard_deviation($aValues)
{
    $fMean = array_sum($aValues) / count($aValues);
    //print_r($fMean);
    $fVariance = 0.0;
    foreach ($aValues as $i)
    {
        $fVariance += pow($i - $fMean, 2);

    }       
    $size = count($aValues) - 1;
    return (float) sqrt($fVariance)/sqrt($size);
}
   function standard_deviation($aValues)
{
    $fMean = array_sum($aValues) / count($aValues);
    //print_r($fMean);
    $fVariance = 0.0;
    foreach ($aValues as $i)
    {
        $fVariance += pow($i - $fMean, 2);

    }       
    $size = count($aValues) - 1;
    return (float) sqrt($fVariance)/sqrt($size);
}
入画浅相思 2024-11-02 05:14:45

这与顶部答案中提到的 php 页面中的 std dev 代码相同,但进行了一些现代化,没有单行数组魔法和单独的辅助函数:

/**
 * Calculates the standard deviation of an array of numbers.
 * @param   array   $array  The array of numbers to calculate the standard deviation of.
 * @return  float   The standard deviation of the numbers in the given array.
 */
function calculateStdDev(array $array): float
{
    $size = count($array);
    $mean = array_sum($array) / $size;
    $squares = array_map(function ($x) use ($mean) {
        return pow($x - $mean, 2);
    }, $array);

    return sqrt(array_sum($squares) / ($size - 1));
}

This is the same std dev code from the php pages mentioned in the top answer, but modernized a bit, without the one-line array magic and separate helper function:

/**
 * Calculates the standard deviation of an array of numbers.
 * @param   array   $array  The array of numbers to calculate the standard deviation of.
 * @return  float   The standard deviation of the numbers in the given array.
 */
function calculateStdDev(array $array): float
{
    $size = count($array);
    $mean = array_sum($array) / $size;
    $squares = array_map(function ($x) use ($mean) {
        return pow($x - $mean, 2);
    }, $array);

    return sqrt(array_sum($squares) / ($size - 1));
}
野心澎湃 2024-11-02 05:14:45

这个话题已经很老了,但实际上我想你可以使用下面的函数轻松地从 Excel 中获得 STDEV.P 函数的替代品。

function stdev_p($arr) {
    $arr2 = array();
    $mean = array_sum($arr)/count($arr);
    for ($x = 0; $x <count($arr); $x++) {
        $arr2[$x] = pow($arr[$x] - $mean,2);
    }
    return sqrt(array_sum($arr2)/count($arr));
}

The topic is pretty old, but actually I guess you can get the substitute of STDEV.P function from Excel easily using the function like below.

function stdev_p($arr) {
    $arr2 = array();
    $mean = array_sum($arr)/count($arr);
    for ($x = 0; $x <count($arr); $x++) {
        $arr2[$x] = pow($arr[$x] - $mean,2);
    }
    return sqrt(array_sum($arr2)/count($arr));
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文