#
#   - - - - - - - -   INCONTRO N. 1 - Introduzione   - - - - - - - -
#
# Copiamo man mano in R (in blocco) le righe seguenti da una che inzia
# con un # fino all'ultima riga di quelle successive non inizianti con # e
# vediamo che succede, senza troppi commenti, per avere una idea di quello
# che si può fare.
#   (non mettiamo le uscite: ogni utente esegue i comandi e ottiene la
#          visulizzazione delle uscite sul proprio computer)
#
# Distanze temporali (in s) tra arrivi successivi a uno sportello
dati <- c(15,29, 4,99,30,11,45, 7,61,67,59, 8,37,30, 5,
          53,18,22,173,6,79,16,16, 6,10,22,13,16,39, 7,
          25, 9,24, 5,10,84,89,38,14,16, 9, 3,34, 9,35,
          34,16,13,37,29,10,51,19,72,15, 9,21,13,51, 2,
           8, 2,40,28, 5,22,51, 6,37,21, 4, 4,33,35,81,
          21, 8,19,42, 9,44,12, 9,53,15,35,96,35,27,34,
           4,13,57,11,20,25,25, 3,48,17,72,14,13,31,94,
           2, 2,38,11, 9, 7,76,96,35, 9,21,28,47,78,26,
          41,16, 3,15, 1,56,26, 3, 8,17,25,40,15,60)
length(dati)
summary(dati)
# Abbiamo caricato una collezione di dati, abbiamo visto quanti sono
# e abbiamo chiesto una loro prima sintesi statistica (vedremo meglio
# più avanti che cosa sono i quartili).
# I singoli valori li posso ottenere con specifici comandi. Es.:
mean(dati)
# I dati sono arrotondati a 7 cifre, ma ne contengono di più.
# Ecco un modo per esplorarle:
print(mean(dati), digits = 16)
#
# Si possono caricare "librerie" che contengono altri comandi (il
# caricamento opera fino a che non si chiude il programma). Vediamo un
# esempio, legato al medesimo problema (l'uso del comando showTree):
library(codetools); showTree(mean(dati))
# Invece di 29.05224 ho 29.0522388059701. 
boxplot(dati,horizontal=TRUE, col="yellow")
# Con il box-and-whiskers-plot (diagramma a scatola e baffi) visualizzo
# tali informazioni; posso dimensionare come voglio il grafico agendo sugli
# angoli della finestra grafica (che posso spostare agendo sulla barra del
# titolo).
# Con lo stem-and-leaf (gambo e foglia) visualizzo dati e loro distribuzione:
stem(dati)
# Rivisualizzo la distribuzione con un'istogramma:
hist(dati)
# Scelgo un'istogramma che rappresenti le frequenze relative:
hist(dati,probability=TRUE)
# Le frequenze sono state divise per le ampiezze delle basi.
# L'area di questo rettangolide è 1.
# Confrontiamolo col grafico di una opportuna funzione:
# (le assegnazioni, come abbiamo visto, si fanno con delle frecce; per
#  definire una funzione occorre usare il nome "function"; si possono
#  mettere più comandi su una stessa riga separati da ";")
w <- 1/mean(dati);  f <- function(t) w*exp(-w*t)
plot(f, 0,170, ylim=c(0,0.025))
hist(dati,probability=TRUE,add=TRUE)
# La funzione è una opportuna esponenziale negativa.
# Quanto vale l'area tra il grafico della funzione e l'asse x?
# Calcoliamo l'integrale di  f  tra 0 e "infinito":
integrate(f, 0,Inf)
# Questa è la "funzione densità" associata al nostro fenomeno.
# Abbiamo visto come si definisce una funzione, come se ne fa il
# grafico, come si calcola un integrale definito.
#
# Vediamo, di corsa, qualche altra attività. L'obiettivo è solo vedere
# cosa si può fare: torneremo su tutto.
# La derivazione:
D(expression( w*exp(-w*t) ),"t")
#
# Il grafico di una funzione in 2 variabili:
x <- y <- seq(-10, 10, length= 30)
f <- function(x,y) { r <- sqrt(x^2+y^2); 10 * sin(r)/r }
z <- outer(x, y, f)
persp(x, y, z, theta = 30, phi = 30, expand = 0.5, col = "lightblue")
#
# I vettori, in un sistema monometrico:
plot(c(-2,8),c(-2,8),type="n",xlab="",ylab="", asp=1)
abline(v=0,h=0); arrows(2,3,6,7)
abline(v=c(2,6),h=c(3,7),lty=3)
#
# La produzione di un certo pezzo da parte di una fabrica e i relativi costi,
# e la retta di regressione:
pezzi <- c(5500,6500,4500,3000,3500,3200,5000,6000,7500,8500)
costi <- c(5400,5600,4800,4800,4900,4600,5300,5400,5800,6000)
plot(pezzi, costi)
mod = lm(costi ~ pezzi); mod$coefficients; abline(mod$coefficients)
#
# Ancora un esempio:  la soluzione del sistema  x+3y=3 AND 2x+4y=7
ma <- matrix(data = c(1,2,3,4), nrow = 2, ncol = 2); ma
noti <- matrix(data = c(3,7), nrow = 2, ncol = 1); noti
solve(ma,noti)
#
# E, infine, un calcolo frazionario: 1 anno e 15 giorni in un anno
# "commerciale" di 360 giorni, caricando una opportuna libreria (che
# contiene il comando fractions)
1+15/360; print(1+15/360, digits=16)
library(MASS); fractions(1+15/360)
# Ho ottenuto  25/24
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Fatto questo esempio introduttivo, incominciamo a fare qualcosa di più
# organico. Vedremo come esplorare un "primo help". Faremo qualche attività
# specifica andando un po' più "a fondo". Ci daremo qualche compito, tra i
# quali qualcuno riservato a chi segue a distanza. E vedremo come salvare/pre-
# parare documenti in/per R. Decideremo, infine, che cosa fare la prossima
# volta.
# Torniamo indietro (<- clicca).