作者worldhero (Hero of the world)
看板PHP
标题Re: [请益] 请问"离群值"
时间Mon Nov 5 19:59:28 2007
※ 引述《tonyshan (考试好多..)》之铭言:
: EX :22、44、55、66、56、77、1000
: 以上的数列作"离群值"
: 请问要怎麽用PHP语法来做
: <?php
: $num = array (22,44,55,66,56,77,1000); //指定array
: $len = count($num); //个数
: $sum += $num[$i];//总合
: $avg = (double)$sum / $len;//平均
: $s=sqrt();//之後就不会做了
: ‧
: ‧
: ‧
: ‧
这是高中数学
标准差:
http://zh.wikipedia.org/wiki/%E6%A8%99%E6%BA%96%E5%B7%AE
母体标准差用n当分母;样本标准差就用n-1当分母
闲着没事我来写写看好了
这是母体标准差
$item = array (22,44,55,66,56,77,1000);
$i = 0;
while ($item[$i]) {
$sum += $item[$i];
$i++;
}
$num = count($item);
$avg = $sum/$num;
$i = 0;
while ($item[$i]) {
$sum_gap += pow($item[$i]-$avg,2);
$i++;
}
$standard_deviation = sqrt($sum_gap/$num);
电脑的运算能力很快很好,所以我建议可以用「平均绝对离差」,这个数值更有意义
平均绝对离差= sigma(|样本-平均数|) / 样本个数
$item = array (22,44,55,66,56,77,1000);
$i = 0;
while ($item[$i]) {
$sum += $item[$i];
$i++;
}
$num = count($item);
$avg = $sum/$num;
$i = 0;
while ($item[$i]) {
$gap = $item[$i]-$avg;
if ($gap < 0) $gap = -$gap;
$sum_gap += $gap;
$i++;
}
$absolute_deviation = $sum_gap/$num;
标准差的诞生是因为平均绝对离差不好算
--
西啦(九孔):「人来到世上都是有罪的,有罪怎麽办?就要净化(打头三下)。小时候读书偷吃
同学的便当,我有罪,我有罪我有罪我有罪(净化);联谊的时候,当你载到恐龙妹的时候,你心
里面暗自讦谯,为什麽她那麽胖!真是超营养鸡排!我有罪我有罪我有罪(净化);小时候偷看A
片被你妈妈抓到,你还赖说那A片是你爸爸的,我有罪我有罪我有罪(净化);去麦当劳的时候,
炸鸡掉到地上,你拍一拍又给客人吃,你有罪,我有罪我有罪我有罪(净化);上厕所去尿尿的
时候,你的马桶盖没有掀,一把尿撒在上面,女朋友去尿尿的时候沾在她屁股上,我有罪我有
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.119.196.145
※ 编辑: worldhero 来自: 140.119.196.145 (11/05 20:00)
1F:推 JoeHorn:array_sum() 很好用... 11/05 20:15
2F:→ worldhero:对!那个函数我太少用结果忘记了XD 11/05 20:21
※ 编辑: worldhero 来自: 140.119.196.145 (11/05 20:24)
3F:推 tonyshan:嗯…谢谢 皆下来应该是用for回圈 取离群值吧 11/06 16:49
4F:推 buganini:应该没有接下来了吧@_@ 11/06 21:01
5F:→ tonyshan:应该是我问题没有说清础吧…取加减三个标准差以外的数 11/08 12:09