-
Notifications
You must be signed in to change notification settings - Fork 1
/
pearson.R
71 lines (54 loc) · 2.85 KB
/
pearson.R
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
pearson<-function(dati,lista_coefficienti)
{
# Caricamento librerie
library("evd")
# Caricamento variabili
lunghezza_intervallo<-(lista_coefficienti[[5]][2]-lista_coefficienti[[5]][1])
triade_chiquadro<-c(rep(NULL,each=3))
miglior_chiquadro<-c(rep(NULL,each=(lunghezza_intervallo)))
posizione_miglior_chiquadro<-c(rep(NULL,each=(lunghezza_intervallo)))
suddivisione<-c(0.2,0.4,0.6,0.8)
lista_definitiva<-list(NULL)
col_names<-c("Best_Gumbel_scale","Best_Gumbel_loc","Best_method","Best_X^2_from_best_method")
row_names<-c(NULL)
data_frame_ultimo<-data.frame(matrix(nrow=lunghezza_intervallo,ncol=4))
g=1
s=0
l=1
# Spazzolatore della riga dei coefficienti(raggruppati a coppie "scale-loc", nell'ordine orario)
for(i in lista_coefficienti[[5]][1]:lista_coefficienti[[5]][2])
{
row_names<-c(row_names,gsub("X","",names(dati)[i]))# Popolazione del vettore nomi #
# di riga #
s=s+1
ec<-ecdf(sort(dati[[i]]))
lunghezza_dati<-length(sort(dati[[i]]))
# Spazzolatore della colonna dei metodi(suddivisi su tre righe, nell'ordine "Momenti-Minimi Quadrati-Massima verosimiglianza"
for(n in 1:3)
{
# Pearson corevalues
quantili<-qgumbel(suddivisione,scale=lista_coefficienti[[n]][g],loc=lista_coefficienti[[n]][g+1])
es_inf<-c(0,ec(quantili)*lunghezza_dati)
es_sup<-c(ec(quantili)*lunghezza_dati,lunghezza_dati)
punti_intervallo<-es_sup-es_inf
delta<-0.2*lunghezza_dati
triade_chiquadro[n]<-sum(((punti_intervallo-delta)^2)/delta)
}
# Immagazzinamento dei migliori coefficienti risultati dal test
miglior_chiquadro[s]<-triade_chiquadro[which.min(triade_chiquadro)]
posizione_miglior_chiquadro[s]<-(1:length(triade_chiquadro))[which.min(triade_chiquadro)]
# Posso immagazzinare in una lista o in una matrice semplicemente #
# commentando/decommentando l'opzione preferita. I dati restano comunque #
# con l'uno o l'altro metodo comprensibilmente ordinati. #
#Restituisce una lista
# lista_definitiva[[s]]<-c(paste(names(dati)[i]),lista_coefficienti[[posizione_miglior_chiquadro[s]]][l],lista_coefficienti[[posizione_miglior_chiquadro[s]]][l#+1],if(posizione_miglior_chiquadro[s]==1) paste("Moments") else if(posizione_miglior_chiquadro[s]==2) paste ("Ls_squares") else if(posizione_miglior_chiquadro[s]==3) #paste("Max_simil"),paste("Best X^2"),miglior_chiquadro[s])
#Restituisce un data.frame
data_frame_ultimo[s,]<-c(as.numeric(lista_coefficienti[[posizione_miglior_chiquadro[s]]][l]),as.numeric(lista_coefficienti[[posizione_miglior_chiquadro[s]]][l+1]),if(posizione_miglior_chiquadro[s]==1) paste("Moments") else if(posizione_miglior_chiquadro[s]==2) paste ("Ls_squares") else if(posizione_miglior_chiquadro[s]==3) paste("Max_simil"),as.numeric(miglior_chiquadro[s]) )
l=l+2
g=g+2
}
names(data_frame_ultimo)<-col_names
row.names(data_frame_ultimo)<-row_names
return (data_frame_ultimo)
#return (lista_definitiva)
}