Advertisement
federico_carosio

Esercizio_3

Dec 27th, 2023 (edited)
188
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
R 4.56 KB | None | 0 0
  1. # ESERCIZIO 3
  2.  
  3. rm(list = ls())
  4. library(moments)
  5. library(evd)
  6. library(goftest)
  7. library(stats)
  8.  
  9. #Importare i dati
  10. data <- read.table("Esercizio3.txt", header = T)
  11. Annual_maxima <- data$Annual_maxima
  12.  
  13. n <- length(Annual_maxima)
  14. h <- hist(Annual_maxima, main = 'Istogramma pioggia')
  15.  
  16. #istogramma frequenze relative
  17. h$counts <- h$counts/n
  18. h$xname <- "frequency"
  19. plot(h, ylim = c(0,1), main = 'Istogramma frequenze relative')
  20.  
  21. media <- mean(Annual_maxima)
  22. varianza <- var(Annual_maxima)
  23. sample_var <- sqrt(varianza)
  24.  
  25. x <- seq(min(Annual_maxima), max(Annual_maxima), 0.1)
  26.  
  27. #DISTRIBUZIONE NORMALE PDF
  28. Fx_norm <- (1/(sample_var*sqrt(2*pi)))*exp((-0.5*((x-media)/sample_var)^2))
  29. plot(h, ylim = c(0,1), main = 'PDF')
  30. lines(x,Fx_norm, col = 'darkgreen', lwd = 2)
  31.  
  32. #DISTRIBUZIONE ESPONENZIALE PDF
  33. lambda <- 1 / media
  34. lambda2 <- 1 / sample_var
  35. Fx <- lambda * exp(-lambda * x)
  36. lines(x, Fx, col = 'blue', lwd = 2)
  37. Fx <- lambda2 * exp(-lambda2 * x)
  38. lines(x, Fx, col = 'pink', lwd = 2)
  39.  
  40. #DISTRIBUZIONE GUMBELL PDF
  41. alpha <- sqrt((sample_var*6)/pi^2)  
  42. b <- media - alpha*0.5772
  43. Fx <- (1/alpha)*exp(((-(x-b)/alpha)-exp(-(x-b)/alpha)))
  44. lines(x, Fx, col = 'red', lwd = 2)
  45. legend("topright", legend=c("Gumbel", "Normal", "Exponential 1", "Exponential 2"),
  46.        col=c("red", "darkgreen", "blue", "pink"), lwd=c(2, 2, 2, 2), bg='lightyellow', text.font=3, text.width = 0.8)
  47.  
  48. #istogramma frequenze relative cumulate
  49. h$counts  <- cumsum(h$counts)
  50. plot(h, ylim = c(0,1), main = 'Istogramma frequenze cumulate')
  51.  
  52. #boxplot
  53. boxplot(Annual_maxima, main = 'Boxplot', horizontal = T)
  54.  
  55. #STATISTICA TEST -----------
  56.  
  57. #funzione di distribuzione empirica cumulata - ECDF
  58. xs <- sort(Annual_maxima)
  59. ordine <- seq(1, n, 1)
  60. pp_weibull <- 1/(n+1)*ordine
  61.  
  62. plot(xs, pp_weibull, pch = 16, col='black', type = 's')
  63. legend("bottomright", legend=c("pp weibull", "Gumbel", "Normal", "Exponential 1", "Exponential 2"),
  64.        col=c("black","red", "darkgreen", "blue", "pink"), lwd=c(2, 2, 2, 2), bg='lightyellow', text.font=3, text.width = 0.8)
  65. #CDF GUMBELL
  66. Fx_gumbel <- exp(-exp(-(x-b)/alpha))
  67. lines(x, Fx_gumbel, col = 'red', lty = 1, lwd = 2)
  68.  
  69. #CDF NORMALE
  70. pvalues <- pnorm(x, mean = media, sd = sample_var)
  71. lines(x, pvalues, lwd = 2, col = 'darkgreen')
  72.  
  73. #CDF ESPONENZIALE 1
  74. pvalues <- pexp(x, rate = lambda)
  75. lines(x, pvalues, col = 'blue', lwd = 1.5)
  76.  
  77. #CDF ESPONENZIALE 2
  78. lambda2 <- 1/sample_var
  79. pvalues <- pexp(x, rate = lambda2)
  80. lines(x, pvalues, col = 'pink', lwd = 1.5)
  81.  
  82. #TEST DEL CHI QUADRO
  83. #definisco numero delle classi
  84. l <- 2 * ( 2*(n-1)^2 / qnorm(0.95)^2 ) ^ 0.2
  85. l <- round(l)
  86. print('Numero di classi per il test del chi quadro = ')
  87. l
  88. if (n/l > 5) {
  89.   print("Il numero di classi è corretto")  
  90. }
  91. pr <- rep(1/l, l)
  92. pr_cum <- cumsum(pr)
  93. pr_cum <- pr_cum[1:(length(pr_cum)-1)]
  94.  
  95. ## Distribuzione di Gumbell
  96.  
  97. breaks_gum <- qgumbel(pr_cum, loc=b, scale=alpha)
  98. E <- n*pr
  99. breaks_gum <- c(-Inf, breaks_gum, Inf)
  100. histogram_g <- hist(Annual_maxima, breaks=breaks_gum, plot=FALSE)
  101. Obs_gum <- histogram_g$counts
  102. chis_gum <- sum((Obs_gum-E)^2/E)
  103. gdl <- l-2-1 #
  104. pvalue_gum <- 1-pchisq(chis_gum , gdl)  
  105.  
  106. ## Distribuzione Normale
  107.  
  108. breaks_norm <- qnorm(pr_cum, mean=media, sd=sample_var)
  109. breaks_norm <- c(-Inf, breaks_norm, Inf)
  110. histogram_n <- hist(Annual_maxima, breaks=breaks_norm, plot=FALSE)
  111. Obs_norm <- histogram_n$counts
  112. chis_norm <- sum((Obs_norm-E)^2/E)
  113. gdl <- l-2-1
  114. pvalue_norm <- 1-pchisq(chis_norm , gdl)
  115.  
  116. ## Distribuzione Esponenziale 1
  117.  
  118. breaks_exp1<- qexp(pr_cum, rate=lambda)
  119. breaks_exp1 <- c(-Inf, breaks_exp1, Inf)
  120. histogram_e1 <- hist(Annual_maxima, breaks=breaks_exp1, plot=FALSE)
  121. Obs_exp1 <- histogram_e1$counts
  122. chis_exp1 <- sum((Obs_exp1-E)^2/E)
  123. gdl <- l-1-1
  124. pvalue_exp1 <- 1-pchisq(chis_exp1 , gdl)
  125.  
  126. # Distribvuzione esponenziale 2
  127.  
  128. breaks_exp2<- qexp(pr_cum, rate=lambda2)
  129. breaks_exp2 <- c(-Inf, breaks_exp2, Inf)
  130. histogram_e2 <- hist(Annual_maxima, breaks=breaks_exp2, plot=FALSE)
  131. Obs_exp2 <- histogram_e2$counts
  132. chis_exp2 <- sum((Obs_exp2-E)^2/E)
  133. gdl <- l-1-1
  134. pvalue_exp2 <- 1-pchisq(chis_exp2 , gdl)
  135.  
  136. pvalue_exp1
  137. pvalue_exp2
  138. pvalue_gum
  139. pvalue_norm
  140.  
  141.  
  142. ##TEST KOLMOGOROV-SMIRNOV
  143. ks.test(Annual_maxima, y="pgumbel", loc=b, scale=alpha)
  144. ks.test(Annual_maxima, y="pnorm", mean=media, sd=sample_var)
  145. ks.test(Annual_maxima, y="pexp", rate=lambda)
  146. ks.test(Annual_maxima, y="pexp", rate=lambda2)
  147.  
  148. ##TEST ANDERSON-DARLING
  149. ad.test(Annual_maxima, null="pgumbel", loc=b ,scale=alpha)
  150. ad.test(Annual_maxima , null="pnorm", mean=media ,sd=sample_var)
  151. ad.test(Annual_maxima , null="pexp", rate=lambda)
  152. ad.test(Annual_maxima , null="pexp", rate=lambda2)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement