标准偏差和模式

时间:2011-05-05 00:53:19

标签: php

我完成了标准偏差...但仍然存在差异我无法解决...当我手动计算标准偏差时...答案与我的系统输出不同。>。<

而对于mode ..我使用了一个数组..这是我的代码:

$sample = array($one[$ctr],$two[$ctr],$three[$ctr],$four[$ctr],$five[$ctr],$six[$ctr],$seven[$ctr],$eight[$ctr],$nine[$ctr],$ten[$ctr],$fda[$ctr]);

rsort($sample);
$holder = $sample[0];
//$holder = $mode;

排序成功..我可以得到最高的数字......但是......我需要使用fpdf将$ holder的值打印到表格中。

但..当我尝试运行系统时...... $ holder的价值...没有打印在表格中...任何关于我如何打印$ holder的价值的想法......或者......值在表中不可见? >。<再次感谢...... :)

1 个答案:

答案 0 :(得分:0)

对于标准偏差,请尝试类似

的内容
$count = count($sample);
$avg = array_sum($sample) / $count;

$standardDividend = 0;

foreach($sample as $val)
    $standardDividend += (pow(($val - $avg), 2));

$standardDev = pow(($standardDividend / $count), .5);

理论上应该有效。

就模式而言,你使用了错误的排序。 rsort()从最高到最低排序,而不是从大多数存在到最不存在。所以$sample

$sample = array(1, 1, 1, 1, 1, 1, 1, 15);

rsort($sample);

$mode = = $sample[0];

等于15,而不是预期的1。相反,尝试:

$mode = arsort(array_count_values($sample));
$mode = $sample[0];

这将返回找到的第一个模式。如果有多个模式,则只返回一个模式。此外,即使没有模式,它也总会返回一些内容。但这是一个开始。