我有一个表格,其中包含许多人数月的数据。为了简化它,假设预处理可以给我一张表 PersonID,MonthNumber,Value。
我想计算每个人在可用月份的价值的线性回归。
基本上我想回答的问题是
'一般来说,这些人的价值观是变得更好,变得更糟还是坚持下去 和时间一样。'
这样做的一种方法是计算每个人在可用月份的线性回归的斜率,并确定该斜率是负,正或零(或接近于零)。
有没有人知道我如何从像我描述的表中计算SQLlite中线性回归的斜率?
理想情况下,查询的结果将是一个表给出 PersonID,Slope,Intercept
或者,更好的是 PersonID,MonthNumber,Slope,Intercept
这样我就可以看到他们每个月都会变得更好,更差或更差。
答案 0 :(得分:0)
我认为这样做会但是因为在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;