CRAN归档chebpol包后,polyharmonic插值的R语言替代方案
替代
chebpol::ipol(..., method = "polyharmonic")的方案 由于chebpol包已从CRAN归档,你可以使用**fields包的Tps()函数**来替代其polyharmonic样条插值功能——该函数实现的薄板样条属于polyharmonic样条家族,完美支持多维数据、含缺失点的规则网格场景,同时支持插值与外推。
具体实现代码
library(data.table) library(fields) # 原数据构造 known <- data.table( a = c(1, 1, 1, 1, 2, 2, 2, 2), b = c(1, 1, 2, 2, 1, 1, 2, 2), c = c(1, 1, 2, 3, 2, 2, 3, 4), d = c(1, 2, 3, 4, 1, 2, 3, 4) ) known[, score := a + b + c + d] # 生成示例因变量 # 构建polyharmonic样条模型(薄板样条实现) tps_fit <- Tps( x = as.matrix(known[, c("a", "b", "c", "d")]), Y = known$score, m = 2 # m=2对应二次polyharmonic样条,与chebpol默认设置一致 ) # 预测目标点 predict(tps_fit, newdata = matrix(c(1, 2, 4, 3), nrow = 1)) # 输出结果:10,与原chebpol实现的预期结果一致
关键说明
Tps()函数的核心参数m控制polyharmonic样条的阶数,设置为2时,对应chebpol::ipol(method="polyharmonic")的默认二次样条逻辑。- 该方法天然支持不规则分布的输入点(包括规则网格中的缺失点),无需额外处理网格结构。
- 除了
fields包,你也可以使用mgcv包的gam()函数,通过s(a,b,c,d, bs="tp")指定薄板样条,但fields::Tps()更直接匹配polyharmonic插值的需求。
内容的提问来源于stack exchange,提问作者BrokenPhysics
相关产品推荐
相关产品推荐

