You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

含两个自变量的Nadaraya-Watson核回归R参数调整问题

关于R语言多自变量Nadaraya-Watson核回归的参数调整问题

首先需要明确:R基础包中的ksmooth()是**仅支持单自变量(一维)**的核回归工具,无法直接处理双自变量(x1、x2)的Nadaraya-Watson估计场景。直接调整range.x、n.points、x.points参数无法实现二维核回归,必须换用支持多变量核回归的专用工具包,同时参数逻辑也会因维度扩展发生变化。

替代方案及对应参数调整逻辑

推荐使用np包(非参数统计工具包)的npreg()函数,它原生支持多变量核回归,对应原ksmooth()参数的调整方式如下:

1. 替代range.x

不需要单独设置范围参数,若要限定预测的自变量范围,直接生成对应x1、x2区间内的网格点即可。例如:

# 指定x1和x2的预测范围
x1_min_max <- range(x1)
x2_min_max <- range(x2)

2. 替代n.points

单变量场景的n.points是指定预测点数量,二维场景下需要分别指定x1和x2方向的点数,总预测点数为两者的乘积。例如:

# x1和x2各取50个点,总预测点为2500个
x1_points <- seq(x1_min_max[1], x1_min_max[2], length.out = 50)
x2_points <- seq(x2_min_max[1], x2_min_max[2], length.out = 50)

3. 替代x.points

将x1和x2的点组合成二维网格,作为预测输入的自变量集,对应ksmooth()的x.points:

# 生成二维预测网格
pred_grid <- expand.grid(x1 = x1_points, x2 = x2_points)

完整示例代码

# 安装并加载np包
install.packages("np")
library(np)

# 模拟二维自变量数据
set.seed(123)
x1 <- rnorm(100)
x2 <- rnorm(100)
y <- 2*x1 + 3*x2 + rnorm(100, sd = 0.5)

# 拟合多变量Nadaraya-Watson核回归(regtype="lc"为局部常数估计,即Nadaraya-Watson)
nw_model <- npreg(y ~ x1 + x2, regtype = "lc")

# 生成预测网格
x1_grid <- seq(min(x1), max(x1), length.out = 50)
x2_grid <- seq(min(x2), max(x2), length.out = 50)
pred_grid <- expand.grid(x1 = x1_grid, x2 = x2_grid)

# 执行预测
predicted_y <- predict(nw_model, newdata = pred_grid)

手动实现时的参数调整(不推荐)

若坚持手动实现二维Nadaraya-Watson核回归,参数需按二维逻辑调整:

  • range.x:改为存储x1、x2各自范围的列表,如range_xy <- list(range(x1), range(x2))
  • n.points:改为指定x1、x2方向点数的向量,如n_points <- c(100, 100)
  • x.points:生成二维网格矩阵,如x_points <- as.matrix(expand.grid(seq(range_xy[[1]][1], range_xy[[1]][2], length.out = n_points[1]), seq(range_xy[[2]][1], range_xy[[2]][2], length.out = n_points[2])))

内容的提问来源于stack exchange,提问作者zaira

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 00:25:18