Dichiarazione di non responsabilità: nei punti seguenti, GROSSLY presuppone che i dati vengano normalmente distribuiti. Se stai effettivamente progettando qualcosa, parla con un professionista delle statistiche e lascia che quella persona firmi sulla linea dicendo quale sarà il livello. Parla con cinque di loro, o con 25 di loro. Questa risposta è pensata per uno studente di ingegneria civile che chiede "perché" non per un professionista di ingegneria che chiede "come".
Penso che la domanda dietro la domanda sia "qual è la distribuzione del valore estremo?". Sì, sono alcuni simboli algebrici. E allora? giusto?
Pensiamo a inondazioni di 1000 anni. Sono grandi.
Quando succederanno, uccideranno molte persone. Molti ponti stanno crollando.
Sai quale ponte non sta andando giù? Lo voglio. Non ... ancora.
Domanda: Quale ponte non crollerà in un'alluvione di 1000 anni?
Risposta: il ponte progettato per resistere.
I dati necessari per farlo a modo tuo:
Supponiamo quindi di avere 200 anni di dati idrici giornalieri. C'è il diluvio di 1000 anni lì dentro? Non da remoto. Hai un campione di una coda della distribuzione. Non hai la popolazione. Se conoscessi tutta la storia delle inondazioni, avresti la popolazione totale di dati. Pensiamo a questo. Quanti anni di dati devi avere, quanti campioni, per avere almeno un valore la cui probabilità è 1 su 1000? In un mondo perfetto, avresti bisogno di almeno 1000 campioni. Il mondo reale è disordinato, quindi hai bisogno di più. Inizi a ottenere probabilità 50/50 su circa 4000 campioni. Inizi a ottenere la garanzia di avere più di 1 su circa 20.000 campioni. Campione non significa "acqua un secondo contro il prossimo" ma una misura per ogni unica fonte di variazione - come la variazione da un anno all'altro. Una misura per un anno, insieme a un'altra misura per un altro anno costituiscono due campioni. Se non si dispone di 4.000 anni di dati validi, è probabile che non ci sia un esempio di inondazione di 1000 anni nei dati. La cosa buona è che non sono necessari molti dati per ottenere un buon risultato.
Ecco come ottenere risultati migliori con meno dati:
se si osservano i massimi annuali, è possibile adattare la "distribuzione di valori estremi" ai 200 valori dei livelli massimi dell'anno e si avrà la distribuzione che contiene il diluvio di 1000 anni -livello. Sarà l'algebra, non l'attuale "quanto è grande". Puoi usare l'equazione per determinare quanto sarà grande l'alluvione di 1000 anni. Quindi, dato quel volume di acqua, puoi costruire il tuo ponte per resistere. Non sparare per il valore esatto, sparare per ingrandirlo, altrimenti stai progettando di fallire sull'alluvione di 1000 anni. Se sei audace, puoi usare il ricampionamento per capire quanto oltre l'esatto valore di 1000 anni devi costruirlo per farlo resistere.
Ecco perché EV / GEV sono le forme analitiche rilevanti:
La distribuzione generalizzata di valori estremi riguarda quanto varia il massimo. La variazione nel massimo si comporta in modo molto diverso dalla variazione nella media. La distribuzione normale, tramite il teorema del limite centrale, descrive molte "tendenze centrali".
Procedura:
- eseguire le seguenti 1000 volte:
i. scegli 1000 numeri dalla distribuzione normale standard
ii. calcolare il massimo di quel gruppo di campioni e memorizzarlo
ora traccia la distribuzione del risultato
#libraries
library(ggplot2)
#parameters and pre-declarations
nrolls <- 1000
ntimes <- 10000
store <- vector(length=ntimes)
#main loop
for (i in 1:ntimes){
#get samples
y <- rnorm(nrolls,mean=0,sd=1)
#store max
store[i] <- max(y)
}
#plot
ggplot(data=data.frame(store), aes(store)) +
geom_histogram(aes(y = ..density..),
col="red",
fill="green",
alpha = .2) +
geom_density(col=2) +
labs(title="Histogram for Max") +
labs(x="Max", y="Count")
Questa NON è la "distribuzione normale standard":
Il picco è a 3.2 ma il massimo sale a 5.0. Ha inclinato. Non scende sotto circa 2,5. Se avevi dati reali (lo standard normale) e scegli solo la coda, stai scegliendo in modo uniforme qualcosa lungo questa curva. Se sei fortunato, allora sei verso il centro e non la coda inferiore. L'ingegneria è all'opposto della fortuna: si tratta sempre di ottenere costantemente i risultati desiderati. " I numeri casuali sono troppo importanti per lasciare al caso " (vedi nota a piè di pagina), specialmente per un ingegnere. La famiglia di funzioni analitiche che meglio si adatta a questi dati: la famiglia di distribuzioni di valore estremo.
Adattamento del campione:
supponiamo di avere 200 valori casuali del massimo dell'anno dalla distribuzione normale standard e faremo finta che siano i nostri 200 anni di storia dei livelli massimi di acqua (qualunque cosa significhi). Per ottenere la distribuzione dovremmo fare quanto segue:
- Esempio della variabile "store" (per rendere il codice breve / facile)
- adatto a una distribuzione generalizzata di valore estremo
- trova la media della distribuzione
- utilizzare il bootstrap per trovare il limite superiore dell'IC al 95% nella variazione della media, in modo da poter indirizzare la nostra ingegneria a tale scopo.
(il codice presume che quanto sopra sia stato eseguito per primo)
library(SpatialExtremes) #if it isn't here install it, it is the ev library
y2 <- sample(store,size=200,replace=FALSE) #this is our data
myfit <- gevmle(y2)
Questo dà risultati:
> gevmle(y2)
loc scale shape
3.0965530 0.2957722 -0.1139021
Questi possono essere collegati alla funzione di generazione per creare 20.000 campioni
y3 <- rgev(20000,loc=myfit[1],scale=myfit[2],shape=myfit[3])
Costruire a quanto segue darà 50/50 probabilità di fallimento su ogni anno:
media (y3)
3.23681
Ecco il codice per determinare quale sia il livello di "alluvione" di 1000 anni:
p1000 <- qgev(1-(1/1000),loc=myfit[1],scale=myfit[2],shape=myfit[3])
p1000
Costruire su questo seguito dovrebbe darti 50/50 probabilità di fallire sull'alluvione di 1000 anni.
p1000
4.510931
Per determinare l'IC superiore del 95% ho usato il seguente codice:
myloc <- 3.0965530
myscale <- 0.2957722
myshape <- -0.1139021
N <- 1000
m <- 200
p_1000 <- vector(length=N)
yd <- vector(length=m)
for (i in 1:N){
#generate samples
yd <- rgev(m,loc=myloc,scale=myscale,shape=myshape)
#compute fit
fit_d <- gevmle(yd)
#compute quantile
p_1000[i] <- qgev(1-(1/1000),loc=fit_d[1],scale=fit_d[2],shape=fit_d[3])
}
mytarget <- quantile(p_1000,probs=0.95)
Il risultato è stato:
> mytarget
95%
4.812148
Ciò significa che, per resistere alla stragrande maggioranza delle alluvioni di 1000 anni, dato che i tuoi dati sono perfettamente normali (non probabile), devi creare per ...
> out <- pgev(4.812148,loc=fit_d[1],scale=fit_d[2],shape=fit_d[3])
> 1/(1-out)
o il
> 1/(1-out)
shape
1077.829
... un'alluvione di 1078 anni.
Linee di fondo:
- hai un campione di dati, non la popolazione totale effettiva. Ciò significa che i tuoi quantili sono stime e potrebbero essere spenti.
- Distribuzioni come la distribuzione generalizzata di valori estremi sono costruite per utilizzare i campioni per determinare le code effettive. Stimano molto meno male nella stima rispetto all'utilizzo dei valori del campione, anche se non hai abbastanza campioni per l'approccio classico.
- Se sei robusto il soffitto è alto, ma il risultato è che non fallisci.
Buona fortuna
PS:
PS: più divertente - un video di YouTube (non mio)
https://www.youtube.com/watch?v=EACkiMRT0pc
Nota in calce: Coveyou, Robert R. "La generazione di numeri casuali è troppo importante per essere lasciata al caso." Probabilità applicata e metodi Monte Carlo e aspetti moderni della dinamica. Studi in matematica applicata 3 (1969): 70-111.
extreme value distribution
piuttosto chethe overall distribution
per adattare i dati e ottenere i valori del 98,5%.