PIOGGE: prove su analisi dei dati in mm/mese, LARDERELLO 51-97 del dott. piero pistoia

PIERO PISTOIA CURRICULUM

<object class="wp-block-file__embed" data="https://ilsillabario2013.blog/wp-content/uploads/2023/04/piero-pistoia-curriculumok-1-78.pdf&quot; type="application/pdf" style="width:100%;height:600px" aria-label="

piero-pistoia-curriculumok-1-78
Download

#Questo articolo permette ad ogni lettore di accedere ai dati #sperimentali su cui rifare tentativi e prove di analisi statistica, #come facciamo noi o contemporaneamente a noi, di divertirsi #a scegliere percorsi, interpretazioni e  integrazioni alternative #su essi e correggere quei passaggi che non convincono, #cercando di risolvere i problemi da noi posti ed altri che #sorgeranno nel processo, usando il potente linguaggio R #orientato al calcolo statistico, dotato di una moltitudine di #strumenti per lo stesso obbiettivo.

#Il linguaggio R fa molto bene ciò che riesce a fare!

#Chi volesse ASSAGGI SUCCESSIVI in divenire di questo post, #clicchi su questo file in odt e con copia-incolla, lo trasferisca #sulla console di R, dopo aver cambiato l’argomento del setwd.

PIOGGE_A_LARDERELLO_1951_1957_MARZO_PARTE_PRIMA

Il seguente link invece attiva un file di premessa che, trasferito su R,  gira senza dare errore sul mio computer con setwd(I:/)

PIOGGIA1_18_2_LARDEREL_1951-97 in pdf

#PROVE INIZIALI: attenzione il post è in costruzione; ci possono essere errori!!!!

#PREMESSA

#Problema da risolvere: come far leggere il file dati da qualsiasi #lettore? I files devono essere col suffisso xls.

Larderello_pioggia_csv1 file xls

#1- Si deve caricare sulla console di Microsoft Excel il file #precedente (si esplicita e si carica in Excel), cliccandoci sopra.

#2 – Si deve memorizzare poi da Excel (file-salva con nome)  #con l’opzione CSV di excel (delimitato da separatore di #elenco), sul proprio Hd o su qualsiasi altro supporto di massa #di proprietà del lettore interessato, col nome “Larderello_pioggia_csv1”; verrà memorizzato col suffisso CSV.

3 -Si proceda a seguire il post.

____________________________________________

getwd()
setwd(“I:/”) #ogni lettore deve sostituire ad I il suo dispositivo #di massa in cui vuole memorizzare il file CSV o txt dei dati
#getwd()

par(ask=T)

#Non era così immediato far caricare ad R il nostro file dati #originale relative alle piogge cadute a Larderello dal 1951 al #1997, fornito dal CNR, gentilmente concesso dal dott. #Alessandro Bettini che gestisce la Stazione Meteo di #Castenuovo V.C. (da precisare). Da un primo controllo sembra #che un solo dato non sia disponibile (sostituito da -999). Da #prima si carica il file in Excel in 7 colonne di cui quella dei #mm/giorno di pioggia è la quarta. Imponiamo che la quarta #colonna sia numerica con “,” (?) il separatore di decimali è “.” #quello delle migliaia.
#Con procedimento riportato all’inizio salviamo 4  colonne in #.CSV #di Excel con dati delimitati da separatore di elenco.

# INTANTO: carichiamo e prepariamo il file dati da studiare:
dataset_lard_51_97=read.csv(“Larderello_pioggia_csv1.CSV”, sep=”,”)
dataset_lard_51_97=dataset_lard_51_97[1:4]
dataset_lard_51_97
attach(dataset_lard_51_97)
dataset=dataset_lard_51_97[,4]
dataset=ts(dataset)
head(dataset)
tail(dataset)

_____________________________

INTERMEZZO

#MODO ALTERNATIVO DI CARICARE,
#ATTRAVERSO EXCEL, FILES CON SUFFISSO
#.TXT CARICABILE DA R
#Partendo da un file con suffisso .xls è possibile memorizzare in #un file testo “tab delimited“(opzione di Excel 2000), invece #che in CSV di Excel; file testo che è pure visto da R. Perché #funzioni nel nostro post, va caricato col nome “Larderel_pioggia_csv1.txt

dataset_lard_51_97 = read.csv(“Larderel_pioggia_csv1.txt”, sep=”\t”)

#o togliendo il sep e sostituendo a read.csv, read.csv2, funziona #ancora

dataset_lard_51_97 = read.csv2(“Larderel_pioggia_csv1.txt)

#>dataset_lard_51_97=read.csv(“Larderel_pioggia_csv1.txt”, #sep=”\t”)
#>dataset_lard_51_97=read.csv2(“Larderel_pioggia_csv1.txt”)

FINE INTERMEZZO

______________________________

#dataset
#Time Series:
#Start = 1
#End = 17154; poichè non è divisibile per 30 – si considerano
#tutti i mesi di trenta giorni – si aggiungono 6 valori finali,
#suggeriti dai valori terminali del mese di dicembre precedente.
#I dati complessivi giornalieri della pioggia caduta in mm/giorno
#ammonta così a 17160; 1760/30 = 572 mesi di 30 giorni;
#572/12 = 47 anni circa.
#Frequency = 1

piog_mensili=matrix(dataset,ncol=30,byrow=T)
medie_piog_mensili1=rowMeans(piog_mensili)
sum_piog_mensili2=medie_piog_mensili1*30
vmesi=sum_piog_mensili2

ts.plot(vmesi) #appare un dato anomalo in vmesi[301]

fix(vmesi) #serve a controllare sul video i grandi files anche
#per correggerli.

vmesi[301]

# Si corregge facendo direttamente a mano in itinere la media #dei due valori vicini e poi su richiesta si memorizza il vettore #corretto

ts.plot(vmesi) #dovrebbe essere corretto il dato mancante

#A partire da qui si deve ancora  correggere!

____________________________________________

#E’ possibile anche costruire un vettore di 572 medie mensili #della pioggia a Larderello richiamabile (da pensare)

#Il programma R salta le righe con “#”, per cui il lavoro #presentato può essere. direttamente riportato sulla console di #R con copia incolla; il programma girerà autonomamente!

getwd()
#setwd(“X:/”) #X è il nome del dispositivo di massa su cui #memorizzare il file “Larderello_pioggia_csv1” che dovrà #avere suffisso .CSV
getwd()

#CERCANDO DI RIASSUMERE
dataset_lard_51_97=read.csv(“Larderello_pioggia_csv1.CSV”, sep=”,”) #OK, ma da controllare questo sep!
dataset_lard_51_97=dataset_lard_51_97[1:4]
#dataset_lard_51_97
attach(dataset_lard_51_97)
dataset=dataset_lard_51_97[,4]
dataset=ts(dataset)
head(dataset)
tail(dataset)

#dataset

piog_mensili=matrix(dataset,ncol=30,byrow=T)
medie_piog_mensili1=rowMeans(piog_mensili)
sum_piog_mensili2=medie_piog_mensili1*30
vmesi=sum_piog_mensili2

ts.plot(vmesi) #appare un dato anomalo in vmesi[301]

fix(vmesi) #serve a controllare sul video i grandi files anche
#per correggerli.

vmesi[301]

# Si corregga in divenire (in fieri, in corso d’opera) facendo #direttamente a man0 la media dei due vicini.

ts.plot(vmesi) #dovrebbe essere corretto il dato mancante

UN VELOCE EXCURSUM DA RIVEDERE ED AGGIORNARE  ATTRAVERSO I LINKS INTERNI CONTINUAMENTE AMPLIATI.

#Potrei riclassificare in una matrice vmesi per righe, a partire #da gennaio 1951, di 12 colonne, dove le somme dei valori di #ogni riga rappresenterebbero la pioggia caduta nei diversi #anni a partire da 1951 e in ogni colonna andrebbero i valori #dei mesi per ogni anno; avremo così  – in quanto abbiamo #corretto il numero dati per la presenza dei mesi diversi da 30 #giorni – circa 47 righe complete e 12 colonne corrispondenti

#ai valori dei dodici mesi di ogni anno. La media di ogni riga #rappresenterebbe la pioggia media di ogni anno (per 12 #otterrei le piogge in ogni anno) e la media di ogni colonna #sarebbe la media di pioggia caduta in tutti i 47 i gennaio, i #febbraio ecc.

#Le piogge cadute nei 47 anni, ottenute col comando #rowMeans, costituirebbero una serie storica annuale da #studiare a parte, magari inserendola nel post costruito per #questo studio già elaborato.

#Potremmo farlo ancora con la funzione

#matrix (piog_anni=matrix(vmesi, ncol=12, byrow=T), o #anche con la funzione ts (che ha come #argomenti: file,start,   #e frequency), la quale  raggruppa i dati con i valori di ogni #mese nella stessa colonna. Nella tabella apparirebbero il

#nome dei mesi ad ogni colonna e degli anni ad ogni riga; #siamo così in grado di prendere i 47 valori di ogni mese (una #volta ogni dodici) per farne la media #piog_anni.ts1=ts(vmesi, #start=1951, frequency=12).

#Questo per un controllo incrociato.
#Poi con subas =vmesi.ts1[seq(1, length(vmesi), by=12)] si #raccolgono i dati di gennaio per i 47 anni (o quanti sono) e ne #fa la media; per gli altri mesi la media si calcola con un for #integrando il comando precedente con la sostituzione di un i #ad 1.

#media_mesi=c()
#for(i in 1:12) {media_mesi[i]=mean(vmesi.ts1[seq(i, #length(vmesi), by=12)])}

#Da confrontare poi media-mesi con colMeans comando usato #con matrix.
#Seguiranno le istruzioni descritte. Si passerà poi ai filtri!

#Da confrontare poi media-mesi con mediacol comando usato #con matrix.
#In tal modo si viene a costruire l ‘EFFETTO STAGIONALE.

#Le dodici medie di colonna relative ai 47 mesi dello stesso #nome (gennaio, febbraio…dicembre), è conseguenza #dell’ipotesi plausibile che, all’interno di ogni anno #debba oscillare un’onda di pioggia legata alle stagioni

#(componente stagionale della serie storica).
#Osservando il grafico del vettore vmesi invece non si notano #trends e ad occhio anche le eventuali oscillazioni sembrano #mascherate, nonostante l’acf del vettore (autocorrelazione) #risulti significativo. Se esiste un’oscillazione di ordine dodici la #riassumiamo dalle medie di ogni mese nel corso dei 47 anni. #Potremmo anche spezzare i dati in 5 parti (4 da dieci anni e #una da 7) per studiarle separatamente onde controllarne le #variazioni nel tempo (come cambia la pioggia nelle varie #stagioni col tempo?)

#Si passerà poi ai filtri!

#Un modo alternativo più ortodosso di studiare una #serie storica mensile detrendizzata  infatti è quello, #suggerito sempre dall’ipotesi accennata suddetta, di calcolare #una media mobile di ordine 12 su tutti dati o sui singoli pezzi #per estrarre dai dati originali un’onda di periodo opportuno     #(stagionalità) costruendo così una seconda serie che, poi #sottratta dall’originale, ne lascia una residuale contenente #ancora trend (se esisteva prima), e qualche ciclo. Alla fine #rimarrà così solo da testare i residui.

#Seguono le istruzioni descritte.

piog_anni=matrix(vmesi, ncol=12, byrow=T)

m_anni=rowMeans(vmesi)

pioganni=m_anni*12

piog_anni.ts1=ts(vmesi, start=1951, frequency=12)

vmesi.ts1 = piog_anni.ts1

subas =vmesi.ts1[seq(1, length(vmesi), by=12)]

media_mesi=c()
for(i in 1:12) {media_mesi[i]=mean(vmesi.ts1[seq(i, length(vmesi), by=12)])}

ts.plot(media-mesi)

DA CONTROLLARE, CORREGGERE ESPANDERE, CONTINUARE….con calma, avendo altri post avviati da gestire.

SEGUIRE I LINKS INTERNI CONTINUAMENTE AGGIORNATI