首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >预测数据趋势

预测数据趋势
EN

Stack Overflow用户
提问于 2015-07-29 14:15:54
回答 1查看 994关注 0票数 0

早上好,斯塔克。我想找出一种预测数据趋势的方法。我想知道是否有更好的方法..。有什么内置的函数或库我可以查看吗?

下面是我得到的信息:(http://3v4l.org/RGU3i)

代码语言:javascript
复制
$PopulationOfTexas = array(
    1999 => 20.56, // in millions
    2000 => 21.56,
    2001 => 22.56,
    2002 => 23.56
);

//generate an array sohwing the difference in each year compared to the previous year
$differneces = array();
$lastyear = null;
foreach($PopulationOfTexas as $k=>$v){
    if(empty($lastyear)){$lastyear = $k; continue;}
    $differneces[$k] = $k - $lastyear;
    $lastyear = $k;

    //use this later
    $lastitem = array("year"=>$k, "data"=>$v);
}

//get the average difference per year
$count = 0;
$total = 0;
foreach($differneces as $k=>$v){
    $count++;
    $total += $v;
}

$average = number_format(($total/$count), 2);

//make a prediction
$predictions = array();
for($i=0;$i<5;$i++){
    $year = isset($year) ? $year+1 : $lastitem["year"]+1;
    $prediction = isset($prediction) ? $prediction+floatval($average) : $lastitem["data"]+floatval($average);
    $predictions[$year] = $prediction;
}

print_r($predictions);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-29 15:08:54

该算法是完全失效的,因为它计算的是数组键(年份值、1999年、2000年等)的平均增量,而不是数组值(人口),因此结果总是1。

这是掩盖事实,你的样本人口数据总是增加一个,如果你增加了更多的变化,你可能会发现错误。修复:

代码语言:javascript
复制
foreach($PopulationOfTexas as $k=>$v){
    if(empty($lastyear)){$lastyear = $v; continue;}
    $differneces[$k] = $v - $lastyear;
    $lastyear = $v;

    //use this later
    $lastitem = array("year"=>$k, "data"=>$v);
}

在更一般的条件下,该算法是非常简单的,因为它将预测一个平面的增加/减少。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31703100

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档