2016-07-17 4 views
0

Я хочу показать с помощью интерактивного ggvis влияние выбросов на оценочную линию регрессии OLS. Для этого я хочу слайдер, который обновляет только одно значение y моей dataframe, например df$y[10] + 1, df$y[10] + 2 и так далее. Как я могу это достичь?Изменение только определенного значения y с помощью ползунка ввода

Некоторые данные, чтобы играть Arround с:

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) 

ответ

0

Можно сочетать dplyr функциональность с ggvis. Следующая ссылка описывает, как это работает:

dplyr verbs for ggvis

Применение глагола dplyr к объекту ggvis создает реактивную трансформации: всякий раз, когда изменяются основные данные, преобразования будет пересчитаны.

С этим я закончил использование мутата с самонаписанной функцией 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) 
Смежные вопросы