2016-07-17 20 views
0

Ich möchte mit einem interaktiven ggvis zeigen Sie die Auswirkungen von Ausreißern auf die geschätzte OLS Regressionslinie. Dafür möchte ich einen Schieberegler, der nur einen y-Wert meines Datenrahmens aktualisiert, z. B. df$y[10] + 1, df$y[10] + 2 und so weiter. Wie kann ich das erreichen?Ändern nur bestimmter y-Wert mit einem Eingabe-Slider

Einige Daten zu spielen arround:

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

Mein aktueller statischer ggvis Code:

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

Antwort

0

Es ist möglich, die dplyr Funktionalität mit ggvis zu kombinieren. Der folgende Link beschreibt, wie es funktioniert:

dplyr verbs for ggvis

ein dplyr Verb zu einem ggvis Objekt Anwendung erzeugt eine reaktive Transformation: immer dann, wenn die zugrunde liegenden Daten ändert sich die Transformation neu berechnet werden.

Damit endete ich Mutate mit einer selbst geschriebenen Funktion outlier. Der wichtige Punkt ist, den reaktiven Schieberegler Eingang in eval() zu wickeln. Ich bin mir sicher, dass es noch Verbesserungspotenzial gibt, aber dies könnte ein guter Ausgangspunkt sein.

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)