kdb中的线性回归

Ter*_*rry 2 regression kdb

这是我构建线性回归的方法,但是当我包含两列以上时,我的代码不起作用.

// Load relevant columns into memory
//
t:?[`data;enlist(=;`date;dat);0b;(ind,dep)!ind,dep];


X:9h$enlist[count[t]#1],t ind;
beta:inv[X mmu flip X] mmu X mmu 9h$t dep;

res:(`yInt,ind)!beta;
Run Code Online (Sandbox Code Playgroud)

ind是符号中的独立字段名称,dep是符号中的依赖字段名称.这部分inv[X mmu flip X]不起作用.如果我为ind包含两个以上的字段,那么将会有一行是空白的,我不能这样做inv.我不确定如何为自变量包含更多列/字段.

Ale*_*sky 6

通过一些小修改,您的代码对我有用:

  / Generate some random data
  n:10;t:([]x1:n?1f;x2:n?1f;x3:n?1f)
  / Compute y = 1 + 2*x1 + 3*x2 + 4*x3 + small random noise 
  update y:1+(2*x1)+(3*x2)+(4*x3)+n?1e-3 from `t;
  / Define ind and dep
  ind:`x1`x2`x3
  dep:enlist`y
  / Build the design matrix
  X:enlist[count[t]#1f],t ind
  / Compute the regression parameters
  inv[X mmu flip X] mmu X mmu flip t dep
1.00052
1.99973
2.999979
4.000045
Run Code Online (Sandbox Code Playgroud)

唯一可能棘手的部分是记住登记和转置dep.

根据您的描述,您的数据可能会出现问题.它包含NaN或您的ind变量不是独立的.