请问ols可以和context by一起用吗

你好, 请问ols无法和context by一起用吗?类似下面语句:

update factor set o = ols(nextRet, (arc, vrc, src, krc))[0] context by underlying

update factor set cor = moving(calOls{n}, (close, arc, vrc, src, krc), win) context by underlying => calOls: r = ols(nextRet, a) => The input matrix is singular.总是报这个错。

附:

defg calOls(n, close, arc, vrc, src, krc)
{
    tb = table(close as close, arc as arc, vrc as vrc, src as src, krc as krc)
    update tb set nextRet = log(close.move(-n)/close)
    b =  matrix(tb[["arc", "vrc", "src", "krc"]])
    try
    {
        r = ols(tb["nextRet"],b)
        return r[0] + r[1] * arc[size(arc)-1] + r[2] * vrc[size(vrc)-1] + r[3] * src[size(src)-1] + r[4] * krc[size(krc)-1]
    }
    catch(ex)
    {
        print(b)
        print("=========")
        return 0
    }
}


请先 登录 后评论

1 个回答

wale

这里应该是输入的矩阵是满秩的
这里可以加一个判断输入的b是否是满秩的矩阵的逻辑,比如    

if(sum(0!=svd(b, computeUV=false)) == 0){
        return 0    
}
请先 登录 后评论