Come si calcola la probabilità del grafico di densità?
Ho la seguente domanda: è possibile calcolare una probabilità di un grafico di densità?
Quindi, ad esempio, ho il seguente frame di dati
test<- data.frame(
Gruppe = rep(c("Aktien","Aktien"),
times=c(136, 37)),
Zufriedenheit = c(f_keineErf, f_Erf))
e traccia un grafico di densità, con la funzione de ggplot:
ggplot(test, aes(x=Zufriedenheit)) +geom_density()
Come posso calcolare la probabilità, ad esempio, di ottenere un valore superiore a 70?
Grazie!
Risposte
I tuoi dati non sono inclusi nella domanda, quindi creiamo un piccolo campione casuale:
library(ggplot2)
set.seed(69)
df <- data.frame(x = rnorm(10))
Ora possiamo creare un grafico di densità come nel tuo esempio:
p <- ggplot(df, aes(x)) +
geom_density() +
xlim(c(-5, 5))
p
Ora, possiamo effettivamente trovare le coordinate xey di questa linea usando la funzione di base R density
ed estraendo i suoi componenti xey in un data frame:
dens <- density(df$x) d <- data.frame(x = dens$x, y = dens$y)
head(d)
#> x y
#> 1 -3.157056 0.0009453767
#> 2 -3.144949 0.0010145927
#> 3 -3.132841 0.0010870523
#> 4 -3.120733 0.0011665920
#> 5 -3.108625 0.0012488375
#> 6 -3.096517 0.0013382316
Possiamo vedere che tracciare questo come un tratteggio rosso geom_line
è lo stesso di geom_density
:
p + geom_line(data = d, aes(x, y), col = "red", linetype = 2, size = 2)
Supponiamo ora di voler conoscere la probabilità di avere un valore maggiore di uno. Possiamo mostrare l'area che ci interessa in questo modo:
p + geom_area(data = d[d$x >= 1,], aes(x, y), fill = "red")
Poiché i valori x sono tutti equidistanti nel nostro frame di dati d
, la proporzione dell'area rossa dell'area sotto la linea è un semplice rapporto tra la somma di tutti i valori y in valori x maggiori di uno rispetto alla somma complessiva di y:
sum(d$y[d$x > 1])/sum(d$y)
#> [1] 0.1599931
Quindi la probabilità di ottenere un valore x di> 1 è 0,15999, o 16%
Creato il 17-08-2020 dal pacchetto reprex (v0.3.0)