【问题标题】:weighted regression in SQLSQL中的加权回归
【发布时间】:2017-10-04 19:38:39
【问题描述】:

我是 SQL 新手,所以希望有人能给我一些启发。我们使用简单的线性回归建立了一个存储过程。现在我想使用 lamda 的折扣因子应用一些权重,即 1, lamda, lamda^2, ..., lamda^n,而 n 是原始系列的长度。

我应该如何生成折扣权重系列并应用于下面的当前代码结构? ...

SUM((OASSpline-OASPriorSpline) * (AdjOASDolDur-AdjOASPriorDolDur))/SUM(SQUARE((AdjOASDolDur-AdjOASPriorDolDur))) as Beta, /* Beta = Sxy/Sxx */
SUM(SQUARE((AdjOASDolDur-AdjOASPriorDolDur))) as Sxx,
SUM((OASSpline-OASPriorSpline) * (AdjOASDolDur-AdjOASPriorDolDur)) as Sxy

...

例如

如果我设置折扣因子 (lamda) = 0.99,我的加权数组应该使用我的系列中的 10 的长度自动生成:

OASSpline = [1.11,1.45,1.79, 2.14, 2.48, 2.81,3.13,3.42,3.70,5.49]
AdjOASDolDur = [0.75,1.06,1.39, 1.73, 2.10, 2.48,2.85,3.20,3.52,3.61]
OASPriorSpline = 5.49
AdjOASPriorDolDur = 5.61
Weight = [1,0.99,0.9801,0.970299,0.96059601,0.9509900,  0.941480149,0.932065348,0.922744694,0.913517247]   

加权线性回归应返回 0.81243398 的 beta,而当前的简单线性回归应返回 0.81164174 的 beta。

非常感谢!

【问题讨论】:

  • edit 您的问题并添加一些示例数据和基于该数据的预期输出。 Formatted textno screen shots。不要在 cmets 中发布代码或附加信息
  • 感谢您的关注,a_horse。我们正在使用 Microsoft SQL。这能回答您的 DBMS 问题吗?
  • 同意@a_horse_with_no_name,预期的输出和样本数据很有帮助。很多人都知道 SQL,但我不知道什么是“折扣因子”、“lamda”、“加权线性回归”或“beta”! :)
  • 很抱歉给您带来了困惑。我在帖子中添加了一些输入和预期输出。

标签: sql sql-server regression weighted


【解决方案1】:

我会试一试。

您可以查看此article dealing generating sequence numbers,然后使用生成的当前行号作为指数。那样有用吗?我认为有相当一部分人被这个请求迷惑了。

【讨论】:

    猜你喜欢
    • 2020-04-11
    • 2011-11-22
    • 1970-01-01
    • 1970-01-01
    • 2015-06-15
    • 2020-09-16
    • 2016-02-12
    • 2012-10-04
    • 1970-01-01
    相关资源
    最近更新 更多