Skip to content

options are ignored in step_ns #1297

@ghost

Description

Possible bug as the options argument is not returning the same output as splines::ns.

I'd like to specify a spline for a continuous variable using step_ns. The docs say I can pass arguments k (knot locations) and Boundary.knots via options argument to step_ns.

However, doing so does not return the same number of basis vectors that I would get were I to use model.matrix and spline::ns. See below

library(recipes)
#> Loading required package: dplyr
#> 
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#> 
#>     filter, lag
#> The following objects are masked from 'package:base':
#> 
#>     intersect, setdiff, setequal, union
#> 
#> Attaching package: 'recipes'
#> The following object is masked from 'package:stats':
#> 
#>     step

d <- tibble(x = seq(-2, 2, 0.01))

recipe(~., data=d) %>% 
  step_ns(x, options = list(k = seq(-1, 1, 0.125), Boundary.knots = c(-1.5, 1.5))) %>% 
  prep %>% 
  bake(new_data=d) %>% 
  ncol
#> [1] 2


model.matrix(~splines::ns(x, k = seq(-1, 1, 0.125), Boundary.knots = c(-1.5, 1.5)), data=d) %>% 
  ncol 
#> [1] 19

Created on 2024-04-12 with reprex v2.0.2

Metadata

Metadata

Assignees

Labels

bugan unexpected problem or unintended behavior

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions