这是我构建线性回归的方法,但是当我包含两列以上时,我的代码不起作用.
// 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.我不确定如何为自变量包含更多列/字段.
通过一些小修改,您的代码对我有用:
/ 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变量不是独立的.
| 归档时间: |
|
| 查看次数: |
2064 次 |
| 最近记录: |