php - Laravel Eloquent 如何在 php 上获得第一和第三四分位数?
问题描述
我正在尝试使用第一个和第三个四分位数查找异常值。这是我目前拥有的:
$data = Data::select('created_at', 'value')
->get();
$median = collect($data)->median("value");
解决方案
您可以像这样创建一个私有函数:
function Quartile($Array, $Quartile) {
sort($Array);
$pos = (count($Array) - 1) * $Quartile;
$base = floor($pos);
$rest = $pos - $base;
if( isset($Array[$base+1]) ) {
return $Array[$base] + $rest * ($Array[$base+1] - $Array[$base]);
} else {
return $Array[$base];
}
}
function Average($Array) {
return array_sum($Array) / count($Array);
}
function StdDev($Array) {
if( count($Array) < 2 ) {
return;
}
$avg = Average($Array);
$sum = 0;
foreach($Array as $value) {
$sum += pow($value - $avg, 2);
}
return sqrt((1 / (count($Array) - 1)) * $sum);
}
然后,你可以调用Quartile()
方法取决于你想要哪个四分位数,如果你想要第一个四分位数,那么把0.25
as$Quartile
的参数值,对于第三个四分位数,它的0.75
。
推荐阅读
- mysql - 在 MySQL 5.6 之前的版本中显示 Binlog 保留
- python-3.x - GCP上的Python3 Pytorch RuntimeError - 没有消息
- python - PYTHON:我正在尝试从 XML 文件中读取不同的值并发送到 Django Html 模板
- graphql - Absinthe 结果具有所有空值
- java - Spring Framework - 模拟不是模拟
- arrays - 使用与字符数组类似的语法显示字符指针?
- scala - 构造具有相同结构的多个案例类的单个函数
- sql - 在分区上订购 string_agg | 大查询
- python - 遍历每一行时如何维护数据框的结构(当前将 df 转换为系列)?
- r - 如何基于 r 中的两列滞后数据