r - 谁能在 geom_smooth() 中更详细地解释 preictdf()
问题描述
我目前正在尝试了解 geom_smooth() 背后的内容以及预测散点图趋势线的作用。资料中说
“计算由(当前未记录的)predictdf() 泛型及其方法执行。”
所以我想知道是否有人有更多关于它的信息。
提前致谢
解决方案
我写了一篇关于在 geom_smooth 中使用自定义函数的博客文章,这可能会有所帮助。它是西班牙语的,但我认为谷歌翻译做得不错。
它的要点是平滑函数必须将“公式”、“数据”和“权重”作为参数,以及您需要的任何其他参数。然后它需要返回一个对象,该对象需要有一个predictdf
接受“model”、“xseq”、“se”和“level”参数的方法。其中: * Model 是您的平滑函数返回的对象, * xseq 是 x 轴上用于评估模型的点序列, * se 是表示是否绘制标准误差的逻辑, * level 是置信水平说标准误。
该predictdf
方法应返回包含 x 和 y 列的数据框,以及可选的 xmin 和 xmax(用于标准错误)。
下面是一个简单的平滑函数示例,它截断级数的傅里叶变换。请注意,它忽略了传递给平滑函数或predictdf
方法的大多数参数。然而,他们需要在那里。
library(ggplot2)
FFTSmooth <- function(formula, data, weights, n = 0.5) {
f <- fft(data$y)
keep <- c(0, seq_len(floor(length(f)/2*n)))
keep <- c(keep + 1, length(f) - keep[keep != 0] + 1)
f[-keep] <- 0 + 0i
model <- list(x = data$x, pred = Re(fft(f, inverse = T))/length(f))
class(model) <- "my_smooth"
return(model)
}
predictdf.my_smooth <- function(model, xseq, se, level) {
data.frame(x = model$x, y = model$pred)
}
set.seed(42)
df <- data.frame(x = seq(0, 360, length.out = 100))
df$y <- with(df, 5*cos(x*pi/180) + 3*sin(x*pi/180*3) + 1.6*rnorm(100))
ggplot(df, aes(x, y)) +
geom_point() +
geom_smooth(method = "FFTSmooth", method.args = list(n = 0.2))
由reprex 包(v0.3.0)于 2019 年 10 月 1 日创建
推荐阅读
- c# - 如何在 asp.net 中使自定义验证类通用(如果属性 1 为真,则需要属性 2)
- getstream-io - GetStream:防止在固定提要中添加相同的活动
- android - Android 从可移动 sd 卡中删除文件(第二个外部存储)
- maven - Jmeter + Maven:如何将 jar 文件添加到 JMeter /lib/ext 文件夹
- oracle - ETL Oracle 连接错误 ORA-01017:用户名/密码无效;
- python - 如何提取在熊猫数据框中的字符串列表中编码的二维数组?
- angular - 创建一个“模拟”键盘上或下键单击的按钮 (TS)
- protractor - 使用量角器启动浏览器同步
- reactjs - 使用 webpack 生产构建时构建失败
- java - Jsoup 将标签与列匹配