使用输入滑块仅更改特定的 y 值

Changing only certain y value with an input slider

我想用交互式 ggvis 绘图显示离群值对估计的 OLS 回归线的影响。为此,我想要一个滑块,它只更新我的数据框的一个 y 值,例如 df$y[10] + 1df$y[10] + 2 等等。我怎样才能做到这一点?

一些可以使用的数据:

set.seed(123)
x     <- sort(runif(15, min = 30, max = 70 ))
y     <- rnorm(15 , mean = 200, sd = 50)
df    <- data.frame(x, y)

我当前的静态ggvis代码:

Library(ggvis)
df %>% 
ggvis(x = ~x, y = ~y)  %>%
layer_points() %>%
layer_model_predictions(model  = "lm", formula = y ~ x)

可以将 dplyr 功能与 ggvis 结合起来。 下面link描述了它是如何工作的:

dplyr verbs for ggvis

Applying a dplyr verb to a ggvis object creates a reactive transformation: whenever the underlying data changes the transformation will be recomputed.

最后我使用了带有自写函数的 mutate outlier。 重要的一点是将反应式滑块输入包装在 eval() 中。我确信仍有改进的潜力,但这可能是一个很好的起点。

library(ggvis)
library(dplyr)

set.seed(123)
x     <- sort(runif(15, min = 30, max = 70 ))
y     <- rnorm(15 , mean = 200, sd = 50)
df    <- data.frame(y, x)

v       <- input_slider(0, 250, value = 0, step = 25, animate = TRUE)
outlier <- function(y, v) y + c(rep(0, 14), v)

df %>% 
  ggvis(x = ~x, y = ~y)  %>% 
  mutate(y = outlier(y, eval(v))) %>% 
  layer_points() %>%
  layer_model_predictions(model  = "lm", formula = y ~ x)