【问题标题】:SQLite - how to calculate linear regression slope?SQLite - 如何计算线性回归斜率?
【发布时间】:2016-06-07 11:10:58
【问题描述】:

我有一个表格,其中包含许多人在数月内的数据。为了简化它假设预处理可以给我一个表 PersonID、MonthNumber、Value。

我想计算每个人在可用月份内的值的线性回归。

基本上我想回答的问题是

'一般来说,这个人的价值观是变好、变坏还是保持不变? 随着时间的流逝。'

一种方法是计算每个人在我可用的几个月内的线性回归斜率,并确定该斜率是负数、正数还是零(或接近零)。

有人知道如何从我描述的表格中计算 SQLlite 中线性回归的斜率吗?

理想情况下,查询的结果将是一个表格 PersonID、坡度、截距

或者,更好的是 PersonID、MonthNumber、斜率、截距

这样我就可以及时了解每个月的情况是变好、变坏还是一样。

【问题讨论】:

  • 你知道一般的公式吗?你知道怎么做 SQL 查询吗?
  • 对这两个问题都是肯定的,但我现在意识到 SQLite 没有平方根函数,所以考虑一下我认为这将有助于获得回归斜率。斜率 = (N . Sum(XY) - (Sum(X) . (Sum(Y) ) / (N x Sum(X . X) - (Sum(X) . Sum(X)))

标签: sqlite statistics regression


【解决方案1】:

我认为这会做到,但由于在 SQLite 中,您不能在后面的行中使用较早的别名,即我不能说 sum(Value) 作为 SumValue,然后像变量一样使用 SumValue,我必须编写几个求和的代码次。

SELECT   PersonID,
         ( 
         COUNT(Value) * SUM(MonthNumber * Value) 
          - ( SUM(MonthNumber) * SUM(Value) ) )
     / 
     ( 
        (COUNT(Value) * SUM(MonthNumber * MonthNumber) ) 
        - (SUM(MonthNumber) * SUM(MonthNumber) ) 
     ) AS slope
FROM     table1
GROUP BY PersonID;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-22
    • 2020-11-14
    • 1970-01-01
    • 2021-02-25
    • 2017-03-10
    • 1970-01-01
    • 2016-07-23
    • 1970-01-01
    相关资源
    最近更新 更多