2017-03-04 1 views
2

Hier ist mein Code und meine Ausgabe (CDF):Wie plotten Sie eine komplementäre kumulative Verteilungsfunktion (CCDF) in R (vorzugsweise in ggplot)?

install.packages("ggplot2") 
library(ggplot2) 


chol <- read.table(url("http://assets.datacamp.com/blog_assets/chol.txt"), header = TRUE) 
df <- data.frame(x = chol$AGE) 
ggplot(df, aes(x)) + stat_ecdf() 

enter image description here

Ich möchte eine CCDF Funktion zeichnen, was ist die "inverse" der Funktion CDF: CCDF (x) = 1-CDF (x). Ich kann keine Quellen zu diesem Problem finden. Gibt es einen einfachen Weg?

Antwort

2

Sie ggplot_build verwenden können, um die Daten für den Plot verwendet zu extrahieren und sie dann ändern:

p <- ggplot(df, aes(x)) + stat_ecdf() 
pg <- ggplot_build(p)$data[[1]] 
ggplot(pg, aes(x = x, y = 1-y)) + geom_step() 

enter image description here

0

In einem Schritt-für-Schritt können Sie auch dies tun:

# load data 
    chol <- read.table(url("http://assets.datacamp.com/blog_assets/chol.txt"), header = TRUE) 


# get the ecdf - Empirical Cumulative Distribution Function of v 
    my_ecdf <- ecdf(chol$AGE) 

# now put the ecdf and its complementary in a data.frame 
    df <- data.frame(x = sort(chol$AGE), 
        y = 1-my_ecdf(sort(chol$AGE))) 

# plot 
    ggplot(data=df, aes(x, y)) + 
    geom_line() + 
    geom_point(color="red") 

enter image description here