# 导包

library(ggplot2)

library(stats)



# 创建数据集

set.seed(233)

x <- seq(0, 10, by = 0.2) #0-10步长为0.2

y <- sin(x) + rnorm(length(x), mean = 0, sd = 0.2) #均值为0、标准差为0.2的正态分布

data <- data.frame(x, y)



# 设置局部加权回归带宽参数

bandwidth <- 0.3



# 执行局部加权回归

loess_fit <- loess(y ~ x, data = data, span = bandwidth)



# 输出回归方程

summary(loess_fit)



# 创建一个新数据集用于绘图

new_data <- data.frame(x = seq(0, 10, by = 0.05))



# 预测回归值

predicted_values <- predict(loess_fit, newdata = new_data)



# 创建图形

ggplot(data, aes(x, y)) +

  geom_point() +               # 生成数据点

  geom_line(data = new_data, aes(x, predicted_values), color = "blue") + #生成线

  ggtitle("局部加权回归拟合") +

  xlab("X轴") +

  ylab("Y轴")



# 计算均方误差

mse <- mean((predicted_values - data$y)^2) #$y表示取data中y的值

cat("均方误差:", mse, "\n")

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐