R语言 从geom_smooth中提取值(方法= loess),但存在一些问题

z4iuyo4d  于 2023-02-26  发布在  其他
关注(0)|答案(1)|浏览(209)

好的,我试着在4个点之间画一条平滑的线,来预测每日温度变化和季节性温度上升之间的变化。

Temperature4.5 <- c(8.1, 6.6, 3.8, 6.7, 8.1)
DayNumber <- c(45, 105, 197, 288, 410)
med4.5 <- data.frame(Season, Temperature4.5, Date, DayNumber)


ggplot(data = med4.5, aes(x=DayNumber, y = Temperature4.5)) +
  geom_point() +
  geom_smooth(method = loess) +
  scale_x_continuous(breaks = seq(45, 410, 1))

但是当我使用ggplot_build时,x变量不是整数(天),而是类似于
45、49.62025、54.24051......等等,
我需要一整天的数字,从x变量到y变量。
我该怎么做呢?
我已经尝试了上面提到的,所以任何步骤将是一个很大的帮助。

ajsxfq5m

ajsxfq5m1#

如果需要对模型进行预测,应避免使用ggplot。您可以先构建模型,然后使用该模型进行预测。例如

med4.5 <- data.frame(
  Temperature4.5 = c(8.1, 6.6, 3.8, 6.7, 8.1), 
  DayNumber = c(45, 105, 197, 288, 410)
)

m <- loess(Temperature4.5~DayNumber, data=med4.5)
newvals <- data.frame(DayNumber=seq(min(med4.5$DayNumber), max(med4.5$DayNumber)))
cbind(newvals, value=predict(m, newvals))
#     DayNumber    value
# 1          45 8.100000
# 2          46 8.086882
# 3          47 8.072556
# 4          48 8.057062
# 5          49 8.040444
# ...

这将为每天创建从最小值到最大值DayNumber的预测值

相关问题