使用patsy,我了解如何打开或关闭拦截。但我没有设法获得横向偏移。例如,我希望能够适应,实质上
y = alpha + beta * abs(x_opt - x_obs)
使用x_opt free。我试着这样写:
y ~ 1 + np.abs(y - x)
为y使用常量列。但是在np.abs()括号内,patsy“关闭”,而y - x只是被解释为一个数字。如果我将y移到1或20,我会得到不同的答案。
类似的问题适用于例如np.pow(1-x,2)或正弦波。能够适应x偏移量将非常有帮助。这可能吗?或者这恰恰是指patsy不是非线性的?
答案 0 :(得分:0)
patsy和大多数statsmodel只处理参数线性的模型。或者更准确地说,设计矩阵和估计参数以线性方式组合的模型,x * beta。
多项式和样条在底层变量中是非线性的,但在基函数方面具有线性表示,因此在参数上是线性的。
目前在statsmodel中实现的模型中唯一的非线性是预定义的非线性,如GLM或离散模型中的链接函数,NegativeBinomial等模型中的形状参数,或混合模型和GEE中的协方差。
非线性最小二乘法的最佳Python包目前是lmfit https://pypi.python.org/pypi/lmfit/