# 导包
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")


