• Non ci sono risultati.

un altro esempio di regressione semplice head(faithful) plot(faithful) fit = lm(faithful$eruptions ~ faithful$waiting) abline(fit, col='red') summary(fit

N/A
N/A
Protected

Academic year: 2021

Condividi "un altro esempio di regressione semplice head(faithful) plot(faithful) fit = lm(faithful$eruptions ~ faithful$waiting) abline(fit, col='red') summary(fit"

Copied!
7
0
0

Testo completo

(1)

#REGRESSIONE LINEARE SEMPLICE SU MODELLI DETERMINISTICI

##Un caso molto banale: regressione lineare su un modello deterministico lineare!

x=-2:2 y=3+x

plot(x,y) fit = lm(y~x) abline(fit, col='red')

summary(fit)

###R^2? p-values?

## pochi punti 'insoliti' potrebbero modificare molto la varianza spiegata R^2

x=-2:2 y=3+x y[4]=-50 plot(x,y)

fit = lm(y~x) abline(fit, col='red')

summary(fit)

###R^2? p-values?

(2)

##la 'varianza spiegata' misura solo correlazione lineare! è possibile che R^2 sia zero ma esiste una relazione di tipo non-lineare!

x= -5:5 y=x^2 plot(x,y) fit = lm(y~x) abline(fit, col='red') summary(fit)

###R^2? p-values?

#REGRESSIONE LINEARE MULTIPLA

library('datasets')

###questa libreria contiene tanti dataset di esempio, non c'è bisogno di fare copy-paste da dati presi altrove: vediamo quali dataset ha caricato:

library(help = "datasets")

### ci sono diversi dataset interessanti

plot(sunspot.month) plot(Titanic)

plot(presidents)

plot(quakes$lat, quakes$long)

(3)

### un altro esempio di regressione semplice

head(faithful) plot(faithful)

fit = lm(faithful$eruptions ~ faithful$waiting) abline(fit, col='red')

summary(fit)

## un esempio di regressione multipla: diametro (girth), altezza, volume di alberi di ciliegio

head(trees)

plot(trees)

fit = lm(formula = trees$Volume ~ trees$Girth + trees$Height) summary(fit)

###ma questo non ha molto senso, no? piuttosto cerchiamo volume =c * altezza^a * diametro^b -> a=1, b=2

log_trees = log(trees)

fit = lm(formula = log_trees$Volume ~ log_trees$Girth + log_trees$Height) summary(fit)

## un esempio di regressione multipla: Germany DAX (Ibis), Switzerland SMI, France CAC, and UK FTSE

(4)

head(EuStockMarkets)

indici = as.data.frame(EuStockMarkets) plot(indici$FTSE, type='l')

plot(indici$DAX, type='l') plot(log(indici$DAX), type='l')

log_indici=log(indici)

### ancora regressione lineare semplice: fit lineare e fit 'esponenziale'

T=length(indici$FTSE) tempo = 1:T

plot(tempo, indici$FTSE, type='l') fit = lm(indici$FTSE ~ tempo) abline(fit)

summary(fit)

plot(tempo, log_indici$FTSE, type='l') log_fit = lm(log_indici$FTSE ~ tempo) abline(log_fit)

summary(log_fit)

### proviamo a vedere se r^2 cresce al crescere della numerosità del campione

summary( lm(log_indici$FTSE[1:10]~ tempo[1:10]) )

(5)

summary( lm(log_indici$FTSE[1:100]~ tempo[1:100]) )

summary( lm(log_indici$FTSE[1:1000]~ tempo[1:1000]) )

#passiamo alla regressione multipla: ci aspettiamo grande correlazioni tra i vari indici europei

fit3=lm(log_indici$FTSE ~ log_indici$CAC + log_indici$SMI+log_indici$DAX) summary(fit3)

fit2=lm(log_indici$FTSE ~ log_ indici$CAC + log_indici$SMI) summary(fit2)

fit1=lm(log_indici$FTSE ~ log_ indici$CAC) summary(fit1)

#REGRESSIONE LINEARE MULTIPLA PER 'FIT' POLINOMIALE

##Abbiamo visto esempi in cui il modello diventava lineare dopo una trasformazione logaritmica (si dice passando a scala logaritmica). La regressione lineare multipla si può usare però anche per 'fittare' con funzioni non lineari, ad esempio polinomi. Facciamo un esempio deterministico:

x= -5:5

y=2+ 5*x + 3*x^2 plot(x,y)

fit = lm(y~x) abline(fit, col='red') summary(fit)

(6)

## chiaramente l'approssimazione lineare non è affatto buona. Possiamo però cercare un modello lineare della forma y = a + b*x + c*z, dove z = x^2.

z = x^2 fit = lm(y~x+z) summary(fit)

curve(2+5*x+3*x^2, from=-5, to=5, add=TRUE, col='blue')

### se volessimo ottenere una approssimazione con polinomi di grado più alto cosa accadrebbe?

x2=x^2 x3=x^3 x4=x^4

fit = lm(y~x+x2+x3)

### ATTENZIONE: se cresce il grado del polinomio, ossia il numero di parametri, abbiamo solo un'illusione di miglior approssimazione:

y =2+ 5*x + 3*x^2 + 5*rnorm(length(x)) plot(x,y)

z = x^2 fit = lm(y~x+z) summary(fit) a= fit

curve( a+b*x+c*x^2, from=-5, to=5, add=TRUE, col='blue')

x2=x^2 x3=x^3 x4=x^4

(7)

fit = lm(y~x+x2+x3+x4) summary(fit)

Riferimenti

Documenti correlati

[r]

Il Titolare raccoglie e/o riceve le informazioni che ti riguardano, quali: nome, cognome, luogo e data di nascita, indirizzo di residenza e immagini video e foto, nonché

In ambito lavorativo, non si rilevano frequenti episodi di violenza sessuale, né ricatti sessuali; i casi che si sono verificati sono stati subiti principalmente

Morphological and immunohistochemical (SATB2, P-glycoprotein 1, CD99, caveolin 1) studies and gene expression profiling showed a remarkable similarity between patient’s tumor and

 posso modellizzare il segnale dalla particella come una gaussiana, il cui valore medio e’ la massa e la cui sigma e’ legata alla vita media.  la misura ha del fondo dovuto

###questa libreria contiene tanti dataset di esempio, non c'è bisogno di fare copy-paste da dati presi altrove: vediamo quali dataset ha caricato:.. library(help

indipendente dalle X i , signi…ca che il modello è buono, nel senso che abbiamo sfruttato nel modo migliore le informazioni contenute nelle X i , senza ritrovarci parte di

Naturalmente usando un metodo di previsione ed applicando il fit solo ai residui il risultato sarà plausibilmente più preciso, però questa serie è abbastanza erratica, per cui quanto