R bs()函数计算(手算模拟)

本文探讨R语言中bs()函数的使用,重点在于理解其计算B样条基矩阵的过程。通过手动计算模拟bs()函数,揭示了函数内部节点的设置,并通过实例验证了bs()函数的正确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

此处需要注意的是R中的默认degree=3,此处的1:5是并不代表内部节点,而是在最后的输出结果的矩阵里,B样条基函数会返回它们在1,2,3,4,5处的值,所以返回的矩阵才会是5行,下面有一个简单实现bs()计算基矩阵的代码,我忘了是从哪里找到的了,可以帮助理解R中bs()的计算过程


rm(list=ls())
# x <- c(0.0, 11.0, 17.9, 49.3, 77.4)
#这是一个递归的程序,注意一下
basis <- function(x, degree, i, knots) {
  browser()
  if(degree == 0){
    B <- ifelse((x >= knots[i]) & (x < knots[i+1]), 1, 0)
  } else {
    if((knots[degree+i] - knots[i]) == 0) {
      alpha1 <- 0
    } else {
      alpha1 <- (x - knots[i])/(knots[degree+i] - knots[i])
    }
    if((knots[i+degree+1] - knots[i&#
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值