我经常使用B样条进行回归.到目前为止,我从来不需要bs详细了解输出:我只选择我感兴趣的模型,并适合它lm.但是,我现在需要在外部(非R)代码中重现b样条模型.那么,矩阵产生的含义是什么bs?例:
x <- c(0.0, 11.0, 17.9, 49.3, 77.4)
bs(x, df = 3, degree = 1) # generate degree 1 (linear) B-splines with 2 internal knots
# 1 2 3
# [1,] 0.0000000 0.0000000 0.0000000
# [2,] 0.8270677 0.0000000 0.0000000
# [3,] 0.8198433 0.1801567 0.0000000
# [4,] 0.0000000 0.7286085 0.2713915
# [5,] 0.0000000 0.0000000 1.0000000
# attr(,"degree")
# [1] 1
# attr(,"knots")
# 33.33333% 66.66667%
# 13.30000 38.83333
# attr(,"Boundary.knots")
# [1] 0.0 77.4
# …Run Code Online (Sandbox Code Playgroud) 比如下面的一个结,二度,样条:
library(splines)
library(ISLR)
fit.spline <- lm(wage~bs(age, knots=c(42), degree=2), data=Wage)
summary(fit.spline)
Run Code Online (Sandbox Code Playgroud)
我看到了我没想到的估计.
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 57.349 3.950 14.518 < 2e-16 ***
bs(age, knots = c(42), degree = 2)1 59.511 5.786 10.285 < 2e-16 ***
bs(age, knots = c(42), degree = 2)2 65.722 4.076 16.122 < 2e-16 ***
bs(age, knots = c(42), degree = 2)3 37.170 9.722 3.823 0.000134 ***
Run Code Online (Sandbox Code Playgroud)
有没有办法在结之前和之后提取二次模型(及其系数)?也就是说,如何在切割点之前和之后提取两个二次模型age = 42?
使用summary(fit.spline)产量系数,但(据我的理解)它们对解释没有意义.