PyMC3中B样条的Patsy公式

问题描述

我正在学习使用PyMC3对B样条曲线建模的知识。花键的设计矩阵(显然)可能会变得非常复杂,因此将这种构造委托给API Patsy更容易。在B样条曲线的背景下,我不明白应该使用类似公式的字符串。

我正在关注的教程(请参阅https://github.com/pymc-devs/resources/blob/master/Rethinking_2/Chp_04.ipynb中的4.74节)使用Patsy的dmatrix来构建其设计矩阵。我不太“明白”。

我创建了一些综合数据,即列,年份和值。在下面的综合数据中,我为每个观察值使用了一个结,度数为0(没有观察到超过1个样条线的影响),希望可以使事情变得简单。

综合数据

fake = pd.DataFrame({'year':[1,2,3],'value':[1,1,1]})
k = [1,3]

没有拦截:

dmatrix(
    "bs(year,knots=knots,degree=0,include_intercept=False) ",{"year": fake.year.values,"knots": k},).view()
>>>
array([[1.,1.,0.,0.],[1.,1.]])

没有拦截-1:

dmatrix(
    "bs(year,include_intercept=False) -1",[0.,1.]])

使用拦截:

dmatrix(
    "bs(year,include_intercept=True) ",1.]])

拦截为-1:

dmatrix(
    "bs(year,include_intercept=True) -1",).view()
>>>
array([[0.,1.]])

API参考: https://patsy.readthedocs.io/en/latest/spline-regression.html https://patsy.readthedocs.io/en/latest/API-reference.html

据我所知,默认行为是包含全1的第一列。通过在“类似于公式的”字符串对象的末尾包含-1,将删除这一列。同样,默认情况下,第二列都是零,而include_intercept=False会删除此列零。

对于样条回归,我想知道:(A)零的列是什么(拦截?),为什么都是零?同样,(B)所有的列是什么? (我猜想那个代表拦截,但是我想这是错误的。)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...