代码之家  ›  专栏  ›  技术社区  ›  aelhak

确定样条函数中节点的位置

  •  0
  • aelhak  · 技术社区  · 5 年前

    我有一个线性回归模型 y 在…上 x 具有 十、 使用具有6个等间距节点的自然样条函数进行编码。我怎样才能知道 十、 对应于结的位置?

    library(splines)
    data <- data.frame(y = rnorm(500,100:200), x = rnorm(500,5:40))
    lm(y ~ ns(x, df = 7), data = data)
    
    0 回复  |  直到 5 年前
        1
  •  1
  •   Allan Cameron    5 年前

    这个 ns 函数本身计算结的位置,并将其作为属性存储在返回值中,因此如果您有:

    library(splines)
    set.seed(1)
    
    data  <- data.frame(y = rnorm(500, 100:200), x = rnorm(500, 5:40))
    

    可以得到如下样条线结:

    attr(ns(data$x, df = 7), "knots")
    #> 14.28571% 28.57143% 42.85714% 57.14286% 71.42857% 85.71429% 
    #>  9.572589 14.592410 19.936425 24.812394 29.970179 35.084943
    

    数值告诉您结的位置,标签显示自使用以来的“七分位” df = 7

    如果需要节点(包括边界)的纯数字向量,可以执行以下操作:

    s <- ns(data$x, df = 7)
    as.numeric(sort(c(attr(s, "Boundary.knots"), attr(s, "knots"))))
    #> [1] 3.597769 9.572589 14.592410 19.936425 24.812394 29.970179 35.08494 40.91534
    
    推荐文章