Penafian: Pada poin-poin berikut ini, GROSSLY menganggap bahwa data Anda terdistribusi secara normal. Jika Anda benar-benar merekayasa apa pun, bicarakan dengan profesional statistik yang kuat dan biarkan orang itu masuk di telepon untuk mengatakan apa levelnya. Bicaralah dengan lima dari mereka, atau 25 dari mereka. Jawaban ini dimaksudkan untuk seorang mahasiswa teknik sipil yang bertanya "mengapa" bukan untuk seorang profesional teknik yang bertanya "bagaimana".
Saya pikir pertanyaan di balik pertanyaan adalah "apa distribusi nilai ekstrim?". Ya itu adalah beberapa aljabar - simbol. Terus? Baik?
Mari kita pikirkan banjir 1000 tahun. Mereka besar.
Ketika mereka terjadi, mereka akan membunuh banyak orang. Banyak jembatan turun.
Anda tahu jembatan apa yang tidak turun? Saya lakukan. Kamu belum ... belum.
Pertanyaan: Jembatan mana yang tidak akan tenggelam dalam banjir 1000 tahun?
Jawab: Jembatan dirancang untuk menahannya.
Data yang perlu Anda lakukan dengan cara Anda:
Jadi katakanlah Anda memiliki data air harian 200 tahun. Apakah banjir 1000 tahun ada di sana? Tidak jauh. Anda memiliki sampel satu ekor distribusi. Anda tidak memiliki populasi. Jika Anda tahu semua sejarah banjir maka Anda akan memiliki total populasi data. Mari kita pikirkan hal ini. Berapa tahun data yang perlu Anda miliki, berapa banyak sampel, untuk memiliki setidaknya satu nilai yang kemungkinannya adalah 1 dalam 1000? Di dunia yang sempurna, Anda membutuhkan setidaknya 1000 sampel. Dunia nyata berantakan, jadi Anda membutuhkan lebih banyak. Anda mulai mendapatkan peluang 50/50 di sekitar 4000 sampel. Anda mulai dijamin memiliki lebih dari 1 di sekitar 20.000 sampel. Sampel tidak berarti "air satu detik vs yang berikutnya" tetapi ukuran untuk setiap sumber variasi yang unik - seperti variasi tahun-ke-tahun. Satu ukuran lebih dari satu tahun, bersama dengan ukuran lain selama satu tahun lagi merupakan dua sampel. Jika Anda tidak memiliki 4.000 tahun data yang baik, maka kemungkinan besar Anda tidak memiliki contoh banjir data 1000 tahun. Yang bagus adalah - Anda tidak perlu banyak data untuk mendapatkan hasil yang baik.
Berikut adalah cara mendapatkan hasil yang lebih baik dengan data lebih sedikit:
Jika Anda melihat maksimal tahunan, Anda dapat menyesuaikan "distribusi nilai ekstrim" dengan nilai 200 dari level maksimum tahun dan Anda akan memiliki distribusi yang berisi banjir 1000 tahun -tingkat. Itu akan menjadi aljabar, bukan "seberapa besar" sebenarnya. Anda dapat menggunakan persamaan untuk menentukan seberapa besar banjir 1000 tahun yang akan terjadi. Kemudian, mengingat volume air itu - Anda dapat membangun jembatan Anda untuk menahannya. Jangan menembak untuk nilai yang tepat, menembak untuk yang lebih besar, jika tidak Anda berencana untuk gagal pada banjir 1000 tahun. Jika Anda berani, maka Anda dapat menggunakan resampling untuk mencari tahu seberapa jauh di baliknya pada nilai 1000 tahun yang Anda butuhkan untuk membangunnya agar dapat menolaknya.
Inilah sebabnya mengapa EV / GEV adalah bentuk analitik yang relevan:
Distribusi nilai ekstrem umum adalah tentang seberapa besar maks. Variasi dalam perilaku maksimum benar-benar berbeda dari variasi dalam mean. Distribusi normal, melalui teorema batas pusat, menjelaskan banyak "kecenderungan sentral".
Prosedur:
- lakukan 1000 kali berikut ini:
i. pilih 1000 angka dari distribusi normal standar
ii. hitung maks kelompok sampel itu dan simpan
sekarang plot distribusi hasilnya
#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")
Ini BUKAN "distribusi normal standar":
Puncaknya adalah di 3.2 tetapi max naik ke 5.0. Itu miring. Tidak sampai di bawah 2,5. Jika Anda memiliki data aktual (standar normal) dan Anda hanya memilih ekornya, maka Anda secara acak memilih sesuatu di sepanjang kurva ini. Jika Anda beruntung maka Anda menuju ke tengah dan bukan ekor bawah. Rekayasa adalah kebalikan dari keberuntungan - ini adalah tentang mencapai secara konsisten hasil yang diinginkan setiap saat. " Angka acak terlalu penting untuk dibiarkan kebetulan " (lihat catatan kaki), terutama untuk seorang insinyur. Keluarga fungsi analitik yang paling cocok dengan data ini - keluarga nilai distribusi yang ekstrem.
Kesesuaian sampel:
Katakanlah kita memiliki 200 nilai acak dari maksimum tahun dari distribusi normal standar, dan kita akan berpura-pura bahwa itu adalah 200 tahun sejarah tingkat ketinggian air maksimum kita (apa pun artinya). Untuk mendapatkan distribusi kami akan melakukan hal berikut:
- Cicipi variabel "store" (untuk membuat kode pendek / mudah)
- cocok dengan distribusi nilai ekstrim umum
- temukan rata-rata distribusi
- gunakan bootstrap untuk menemukan batas atas 95% CI dalam variasi rata-rata, sehingga kami dapat menargetkan rekayasa kami untuk itu.
(kode menganggap di atas telah dijalankan terlebih dahulu)
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)
Ini memberikan hasil:
> gevmle(y2)
loc scale shape
3.0965530 0.2957722 -0.1139021
Ini dapat dicolokkan ke fungsi pembangkit untuk membuat 20.000 sampel
y3 <- rgev(20000,loc=myfit[1],scale=myfit[2],shape=myfit[3])
Membangun hal-hal berikut akan memberikan peluang 50/50 untuk gagal pada tahun apa pun:
berarti (y3)
3,23681
Berikut adalah kode untuk menentukan level "banjir" 1000 tahun:
p1000 <- qgev(1-(1/1000),loc=myfit[1],scale=myfit[2],shape=myfit[3])
p1000
Membangun hal-hal berikut ini akan memberi Anda 50/50 kemungkinan gagal pada banjir 1000 tahun.
p1000
4.510931
Untuk menentukan 95% CI atas saya menggunakan kode berikut:
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)
Hasilnya adalah:
> mytarget
95%
4.812148
Ini berarti, bahwa untuk menahan sebagian besar banjir 1000 tahun, mengingat data Anda sangat normal (tidak mungkin), Anda harus membangun untuk ...
> out <- pgev(4.812148,loc=fit_d[1],scale=fit_d[2],shape=fit_d[3])
> 1/(1-out)
atau
> 1/(1-out)
shape
1077.829
... 1078 tahun banjir.
Garis bawah:
- Anda memiliki sampel data, bukan total populasi aktual. Itu berarti kuantil Anda adalah perkiraan, dan bisa mati.
- Distribusi seperti distribusi nilai ekstrem umum dibuat untuk menggunakan sampel untuk menentukan ekor yang sebenarnya. Mereka jauh lebih buruk dalam memperkirakan daripada menggunakan nilai sampel, bahkan jika Anda tidak memiliki cukup sampel untuk pendekatan klasik.
- Jika Anda kuat, langit-langitnya tinggi, tetapi hasilnya adalah - Anda tidak gagal.
Semoga berhasil
PS:
PS: lebih menyenangkan - video youtube (bukan milikku)
https://www.youtube.com/watch?v=EACkiMRT0pc
Catatan Kaki: Coveyou, Robert R. "Pembuatan angka acak terlalu penting untuk dibiarkan kebetulan." Probabilitas Terapan dan Metode Monte Carlo dan aspek dinamika modern. Studi dalam matematika terapan 3 (1969): 70-111.
extreme value distribution
daripadathe overall distribution
mencocokkan data, dan mendapatkan nilai 98,5%.