我想在python中复制这个Q
矩阵,但似乎无法实现。
min = 0
max = 10
tau = seq(min, max)
pDegree = 5
Q <- splines::ns(tau, pDegree)
print(Q)
字符串
下面是Python中的一些尝试
import numpy as np
from patsy import dmatrix
from scipy import interpolate
min = 0
max = 10
tau = np.arange(min, max + 1)
pDegree = 5
# try one
spline_basis = dmatrix("bs(x, df=" + str(pDegree) + ", include_intercept=True) - 1", {"x": tau})
print(spline_basis)
# try two
spline_basis = dmatrix("bs(x, df=" + str(pDegree) + ", include_intercept=False) - 1", {"x": tau})
print(spline_basis)
型
这是我在R中得到的矩阵
2条答案
按热度按时间t5fffqht1#
你这里有几件事
tau
是0:11,但python代码中的tau
等效于0:10
1.你在python代码中生成了B样条,但在R代码中使用了
ns()
。我发现我可以使用dmatrix来复制
mgcv
包估计的基础。举例来说:
字符串
Python:
型
czq61nw12#
我最近也在处理类似的问题,所以我通过检查R的
ns()
和patsy
的bs()
编写了自己的ns()
。下面是Python代码:字符串
运行您的示例:
型
我明白
型
与R的输出匹配。
请注意,R的
ns()
包含了很多我没有实现的特定于情况的处理。因此,使用风险自担。