In questo file o questo sono raccolti alcuni dati (peso, lunghezza, lunghezza esculsa coda, sesso, peso delle gonadi - vedi) relativi a 129 trote di allevamento di circa due anni raccolti da alcuni studenti universitari.  Analizza statisticamente i dati, svolgendo opportuni commenti (analizza alcune variabili singolarmente, relativamente all'intero campione o a parti di esso, e studia la correlazione tra alcune di esse). Un file di testo, identico, che contiene i dati è presente qui:  http://macosa.dima.unige.it/om/esr/pro/pesci.txt

Possibile svolgimento con R. In fondo lo svolgimento con degli script online.

### (1) ###
pesci = "http://macosa.dima.unige.it/om/esr/pro/pesci.txt"
readLines(pesci,n=10)
## Vedo come sono organizzati i dati
# [1] "'dati di 129 trote di allevamento di circa due anni"
# [2] "'raccolti da studenti di Biologia di Genova"        
# [3] "'a: peso in g"                                      
# [4] "'b:lunghezza in cm"                                 
# [5] "'c:lunghezza esclusa coda"                          
# [6] "'d:sesso (0 non identificato, 1 F, 2 M)"            
# [7] "'e:peso delle gonadi in g"                          
# [8] "195.2;27.0;24.0;0;0.036"                            
# [9] "220.2;26.5;24.0;0;0.051"                            
#[10] "164.3;24.5;21.5;0;0.051"
## Capisco che devo saltare 7 righe e che il separatore è ";"
dati = read.delim(pesci,header=FALSE,skip=7,sep =";")
str(dati)   # Un rapida vista dei dati:
#'data.frame':   129 obs. of  5 variables:
# $ V1: num  195 220 164 210 188 ...
# $ V2: num  27 26.5 24.5 27.5 25 26.5 25 26 25.5 26 ...
# $ V3: num  24 24 21.5 23 22 23.5 22 23 22 23 ...
# $ V4: int  0 0 0 0 0 0 1 1 1 1 ...
# $ V5: num  0.036 0.051 0.051 0.053 0.06 0.069 0.055 0.115 0.12 0.126 ...
## V1 peso, V2 lungh, V3 lungh senza coda, V4 sesso, V5 peso gonadi
summary(dati)   # Un rapido esame di essi:
#     V1            V2            V3            V4            V5        
# Min. : 111.9  Min.:  22.00  Min.  :18.50  Min.  :0.000  Min.  :0.0100  
# 1^Qu.: 176.6  1^Qu.: 25.50  1^Qu.: 22.00  1^Qu.: 1.000  1^Qu.: 0.1890  
# Median:191.4  Median:26.00  Median:23.00  Median:1.000  Median:0.2280  
# Mean  :192.7  Mean  :26.29  Mean  :22.98  Mean  :1.016  Mean  :0.2342  
# 3^Qu.: 208.5  3^Qu.: 27.00  3^Qu. :24.00  3^Qu. :1.000  3^Qu. :0.2800  
# Max.  :266.4  Max. : 30.00  Max.  :26.50  Max.  :2.000  Max.  :0.5290 

### (2) ### 
## Esaminiamo prima la variabile qualitativa (V4: sesso, uscite 0,1,2) che ha una
## media che ci fa supporre che i maschi siano molto pochi.
## Per l'istogr. prendo intervalli centrati in 0,1 e 2: estremi 0,1,2,3 meno 1/2
dev.new(); hist(dati$V4,seq(0,3,1)-1/2,probability=TRUE,col="grey",main="",cex.axis=0.9); BOX()

           

## Per le frequenze assolute e percentuali posso fare:
hist(dati$V4,seq(0,3,1)-1/2,probability=TRUE,col="grey",main="",cex.axis=0.9)$counts
#  6 115   8
hist(dati$V4,seq(0,3,1)-1/2,probability=TRUE,col="grey",main="",cex.axis=0.9)$density
# 0.04651163 0.89147287 0.06201550

datiM <- subset(dati,dati$V4==2); datiF <- subset(dati,dati$V4==1)
## I maschi sono molto pochi. Vedo che l'unica differenza significativa è
## il dato riferito al peso delle gonadi (V5), che è inferiore.
summary(datiM)
#     V1            V2            V3            V4        V5        
# Min.  :141.0  Min.  :24.00  Min.  :20.00  Min.  :2  Min.  :0.0100  
# 1^Qu. :176.9  1^Qu.: 24.75  1^Qu. :21.38  1^Qu. :2  1^Qu.: 0.0245  
# Median:187.2  Median:25.50  Median:22.00  Median:2  Median:0.0715  
# Mean  :188.4  Mean:  25.44  Mean  :21.88  Mean  :2  Mean  :0.0670  
# 3^Qu. :203.8  3^Qu.: 26.12  3^Qu. :22.50  3^Qu. :2  3^Qu. :0.1065  
# Max.  :235.2  Max.  :27.00  Max.  :23.50  Max.  :2  Max.  :0.1210
summary(datiF )
#     V1            V2            V3            V4        V5        
# Min.  :111.9  Min.  :22.00  Min.  :18.50  Min.  :1  Min.  :0.0550  
# 1^Qu. :176.3  1^Qu. :25.50  1^Qu. :22.00  1^Qu. :1  1^Qu. :0.2065  
# Median:191.4  Median:26.50  Median:23.00  Median:1  Median:0.2390  
# Mean  :192.8  Mean  :26.35  Mean  :23.06  Mean  :1  Mean  :0.2552  
# 3^Qu. :208.5  3^Qu. :27.00  3^Qu. :24.00  3^Qu. :1  3^Qu. :0.2845  
# Max.  :266.4  Max.  :30.00  Max.  :26.50  Max.  :1  Max.  :0.5290 
## Mi limito, dunque, a studiare la sottopopolazione delle femmine.

### (3) ### 
## Peso delle femmine: istogramma e boxplot
dev.new(); hist(datiF$V1,probability=TRUE,col="grey",main="",cex.axis=0.9); BOX()
statistics(datiF$V1)
#    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
#   111.9   176.3   191.4   192.8   208.5   266.4 
#     The brown dots are 5^ and 95^ percentiles 
#            The red dot is the mean 

           

### (4) ### 
## Lunghezza delle femmine: istogramma e boxplot
dev.new(); hist(datiF$V2,probability=TRUE,col="grey",main="",cex.axis=0.9); BOX()
statistics(datiF$V2)
#   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
#  22.00   25.50   26.50   26.35   27.00   30.00 
#    The brown dots are 5^ and 95^ percentiles 
#           The red dot is the mean 

           

### (5) ### 
## Lunghezza senza coda delle femmine: istogramma e boxplot
dev.new(); hist(datiF$V3,probability=TRUE,col="grey",main="",cex.axis=0.9); BOX()
statistics(datiF$V3)
#   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
#  22.00   25.50   26.50   26.35   27.00   30.00 
#    The brown dots are 5^ and 95^ percentiles 
#           The red dot is the mean 

            

### (6) ### 
## Peso delle gonadi delle femmine: istogramma e boxplot
dev.new(); hist(datiF$V5,probability=TRUE,col="grey",main="",cex.axis=0.9); BOX()
statistics(datiF$V5)
#   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
#  0.0550  0.2065  0.2390  0.2552  0.2845  0.5290 
#    The brown dots are 5^ and 95^ percentiles 
#           The red dot is the mean 

            

### (7) ### 
## A questo punto studiamo le correlazione tra le diverse variabili, escluso
## il sesso. Metto in datiF1 i dati delle femmine (escluso il sesso)
datiF1 = datiF[c(1,2,3,5)]
cor(datiF1)
#        V1        V2         V3         V5
# V1 1.0000000 0.8171241 0.75413292 0.28376025
# V2 0.8171241 1.0000000 0.78219905 0.15297057
# V3 0.7541329 0.7821990 1.00000000 0.09205871
# V5 0.2837603 0.1529706 0.09205871 1.00000000
## V1 peso, V2 lungh, V3 lungh senza coda, V5 peso gonadi
## V5 ha un basso coefficiente di correlazione con le altre variabili.
## Le altre sono abbastanza correlate tra di loro.

### (8) ###
## Studiamo la relazione tra le due lunghezze. C'è, mediamente, una relazione di
## diretta proporzionalità tra le due: la coda è lunga circa il 13% del pesce (sotto
## la retta di regressione vincolata a passare per l'origine; 100%-87% = 13%):
x = datiF$V2; y = datiF$V3; range(x); range(y)
#                          22  30    18.5  26.5
BF=5; HF=3.5; Plane(0,31, 0,28); Punto(x,y, "brown")
regression(x,y, 0,0)
# 0.8748 * x 
F = function(x) 0.8748 * x; graph1(F, -1,31, "seagreen")

        

### (9) ###
## Studiamo la relazione tra lunghezza e peso
x = datiF$V2; y = datiF$V1; range(x); range(y)
#                          22  30    111.9  266.4
Plane(0,31, 0,270); Punto(x,y, "brown")
## In questo caso il peso in funzione della lunghezza non ha (come era ovvio avesse
## nel caso precedente) un andamento di proporzionalità diretta; ma, trattandosi di
## dati relativi a pesci grosso modo coetanei (non di pesci di età variabile libera-
## mente), ha un andamento grosso modo lineare: i dati danno luogo a punti disposti
## attorno ad una retta non passante per l'origine: y = -232+16.1x
regression1(x,y)
# 16.12 * x + -231.9 
G = function(x) 16.12 * x + -231.9; graph1(G, -1,31, "seagreen")

        

### (10) ###
## La variabile V5 (peso delle gonadi), in questo range di età, ha un coefficiente
## di correlazione positivo con il peso (V1) e con la lunghezza (V2), ma molto basso
## (0.284 e 0.153). I relativi diagrammi confermano queste valutazioni numeriche.



  Per altri commenti: Correlazione tra variabili casuali neGli Oggetti Matematici.


Vediamo come elaborare i dati (vedi) utilizzando degli script online.  Dando uno sguardo ai dati vediamo immediatamente che le trote sono quasi tutte femmine. Facciamo l'istogramma del dato "sesso" (0 non identificato, 1 F, 2 M) usando questo file (copio i dati del sesso - 0,0,...,2 - e li introduco).

Ottengo:

A questo punto dei dati raccolti esaminiamo solo quelli delle trote femmine. Facciamo subito i boxplot, usando questo script.

peso F     mean=192.843  min=111.9  1^ quartile=176  median=191.4  3^ quartile=208.5  max=266.4
41.5%  10%  11.1%  37.5%
← 5^ percentile=152   95^ percentile=230.5 →
lunghezza F     mean=26.352  min=22  1^ quartile=25.5  median=26.5  3^ quartile=27  max=30
43.8%   12.5%   6.3%   37.5%
← 5^ percentile=24.5   95^ percentile=29 →
senza coda F     mean=23.057  min=18.5  1^ quartile=22  median=23  3^ quartile=24  max=26.5
43.8%   12.5%   12.5%   31.3%
← 5^ percentile=21   95^ percentile=25.5 →
gonadi F     mean=0.255  min=0.055  1^ quartile=0.206  median=0.239  3^ quartile=0.285  max=0.529
31.9%   7%   9.7%   51.5%
← 5^ percentile=0.129   95^ percentile=0.432 →

Posso osservare, per inciso, che il peso delle gonadi dei maschi è significativamente più basso (0.010, 0.020, 0.026, 0.068, 0.075, 0.105, 0.111, 0.121 contro la media 0.255).  Gli andamenti dei box-plot sono confermati da quelli degli istogrammi, realizzati con questo script.

È evidente, come già osservato, la correlazione (negativa) tra sesso (1 F, 2 M) e peso delle gonadi. Usiamo questo script:

Ci aspettiamo correlazioni maggiori tra lunghezza con e senza coda, tra lunghezza e peso. Esploriamo, poi, quello tra peso delle gonadi e sia lunghezza che peso. Ci limitiamo alle femmine.

Nel caso delle lunghezze con e senza coda forse sarebbe meglio imporre il passaggio per (0,0): ipotizzando una trota di lughezza 0, se le taglio la coda la lunghezza resta 0 (il coefficiente di correlazione ovviamente non cambia).

Se rappresentassimo i dati ci aspetteremmo nei primi due casi la loro distribuzione, abbastanza allineata, lungo le due rette di regressione. Negli ultimi due casi ci aspetteremmo un minore allineamento. Volendo possiamo rappresentare graficamente dati e rette di regressione con script di questo tipo.