求线性回归斜率的函数

 float linearRegessionSlope(std::list<PointItem> & data)
{
 if (data.empty())
  return 0.0f;

 float Lxx = 0.0f, Lxy = 0.0f, xa = 0.0f, ya = 0.0f;
 std::list<PointItem>::iterator it;

 //求平均数
 for (it = data.begin(); it != data.end(); it++)
 {
  xa += it->timeX;
  ya += it->valueY;
 }
 xa /= data.size();                                     // X平均值
 ya /= data.size();                                     // Y平均值

 
 for (it = data.begin(); it != data.end(); it++)
 {
  Lxx += ((it->timeX - xa) * (it->timeX - xa));         // Lxx = Sum((X - Xa)平方)
  Lxy += ((it->valueY - xa) * (it->valueY - ya));       // Lxy = Sum((X - Xa)(Y - Ya))
 }
 if(Lxx > 0.0f || Lxx < 0.0f)
  return Lxy / Lxx;                                 // b = Lxy / Lxx
 else
  return 10.0f;//够大了吧
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值