Salta ai contenuti. | Salta alla navigazione

Strumenti personali

lab 4_LRM seconda parte

Plain Text icon lab 4_ aggiuntivo su regressione.txt — Plain Text, 6 kB (6958 bytes)

Contenuto del file

####    Regressione Lineare Semplice    ###
########    prof. Mini Valentina    #######
#    appunti per STATISTICA MULTIVARIATA  #
##############    2019-2020   #############

#########creare un database semplice in R: 

X=c(1213,1518,3050,852,1550,1215,2120,2207,2175)
Y=c(13474,16497,29349,11314,17224,14459,22186,23483,24095)

#dove X= numero di pezzi di laminati prodotti (dimensione del processo di produzione)

#Y= costo di produzione in serie di laminati

#########caricare dall'esterno un database semplice in R
#cambio directory e indico quella di riferimento

dati=read.csv2("produzione.csv",header=T)

#facciamo riferimento al database semplice "produzione" da Pearson

dati #per visualizzare il dataset "dati"

dim(dati) #per visualizzare il numero di unit� e di var

n=dim(dati)[1] #n dimensione del campione

names(dati) #nome delle variabili

attach(dati) #siamo sicuri che in R ci sia il dataset 


############VISUALIZZAZIONE GRAFICA:SCATTERPLOT

#pu� essere utile visualizzare graficamente i dati 
#mediante scatterplot
#tra costo di produzione e numero di pezzi prodotti 

#scatterplot di Y vs X

plot(X,Y,main="scatterplot di Y vs X", lwd=2, xlab="Numero pezzi prodotti", ylab="Costo di produzione")


########## MODELLO DI REGRESSIONE LINEARE SEMPLICE 

#ora richiamiamo il comando per creare un "linear Model" lm (ovvero una regressione lineare semplice)
#l'output � vasto e complesso, quindi suggerisco di salvare l'analisi 
#in una variabile per poi estrarre le informazioni necessarie per analizzare i dati

#output del modello di regressione
#si usa il simbolo tilde. Generalmente: 
#tilde ~ in windows � alt+126
#tilde ~ in MC � alt+5


result=lm(Y~X)
result

#la variabile result � una variabile creata da lm ed � un oggetto di classe lm
#in tale classe sono contenuti: 
# a) la formula in mase alla quale l'oggetto � stimato
# b) le stime puntuali dei coefficienti di regressione
# c) una lista conetenete coefficients, residuals, fitted.values, rank, weights, df.residuals, call ...

#tutte queste informazioni le useremo nell'analisi di lm, per avere info aggiuntive help(lm)
#per "estrarre" le informazioni si utilizza la specifica $

########SCATTERPLOT CON MODELLO STIMATO#############

#per sovrapporre allo scatterplot il nostro modello stimato � necessario
#estrarre i valori stimati di Y in corrispondenza delle osservazioni della var. esplicativa X

#valori stimati per la variabile Y
Ycapp=result$fitted

#ovvero estraiamo dall'analisi contenuta nella variabile "result" 
# i valori del modello stimato (o fitted model)


plot(X,Y,main="scatterplot di Y vs X", lwd=2, xlab="numero pezzi prodotti", ylab="costo di produzione")
lines(X,Ycapp,lwd=2,col="red")
lines(X,Ycapp,lwd=2,col="green")
lines(X,Ycapp,lwd=2,col="blue")

############## OSSERVAZIONE E COMMENTO DEL GRAFICO OTTENUTO

# dal grafico si pu� osservare che la relazione tra numero di pezzi prodotti e 
# costo di produzione � approssimativamente lineare; 
# sembra esserci una correlazione positiva (al crescere diel numero di pezzi prodotti
# cresce il costo di produzione)
# inoltre non sono evidenti outlier (o valori anomali)

############# OSSERVARE L'OUTPUT DELL'ANALISI

#il comando summay() ci permette di ottenere maggiori risultati sull'analisi condotta

summary(result)

#il risultato ottenuto da summary contiene: 

######## 1) call : la formula in base alla quale � stato stimato il modello
#  vediamo 
#  Call:
#  lm(formula = Y ~ X)


######### 2) residuals : minimo, primo quartile, mediana, terzo quartile e massimo dei residui del modello
#  vediamo: 
#   Residuals:
#    Min      1Q      Median      3Q      Max 
#   -926.29  -461.61   -5.41    144.49  1425.51 



#########3) coefficients: per ciascun coefficiente sono riportati:
#		- la stima puntuale
#		- il corrispondente errore standard
#		- il valore della statistica test t associata al test bilatero H0:Bi=0
#		  contro l'alternativa H1:B1 diverso da 0; 
#		- p-value relativo  questo test di ipotesi
#vediamo: 

# Coefficients:
#              Estimate Std. Error  t value Pr(>|t|)    
#(Intercept)  3763.6291   750.9216   5.012  0.00154 ** 
# X              8.6923     0.3996  21.752  1.1e-07 ***


########## 4) signif. codes : la legenda da associare ad ogni p-value 
#vediamo: 
#Signif. codes:  0 �***� 0.001 �**� 0.01 �*� 0.05 �.� 0.1 � � 1



# 5) ANOVA : il valore dell'errore standard dei residui 
# vediamo: 
# Residual standard error: 767.5 on 7 degrees of freedom

# Multiple R-squared:  0.9854,    Adjusted R-squared:  0.9833 

# F-statistic: 473.1 on 1 and 7 DF,  p-value: 1.095e-07

#####SPIEGAZIONE DI ANOVA: 
# il valore dell'errore standard dei residui con i relativi gradi di libert�
# il valore di R2 e del valore aggiustato (utile per comparare mdelli diversi)
# il valore della statistica test F dell ANOVA con i relativi gradi di libert� e il p-value associato
#relativi al seguente test di ipotesi: 
#   H0: modello senza predittore Y=B0+Err
#   H1: modello con predittore Y=B0+B1X+Err

#R2 � la proporzione di variabilit� nella Y osservata, spiegata 
#   dal modello di regressione lineare basato su X

#si pu� notare che ESSENDO UNA REG. LIN. SEMPL. il test F coincide con il test t eseguito su B1
# ovvero F=473.1 = quadrato di t su B1=(21.752)^2 e
# il p-value dei due test coincidono 

############# IL MODELLO STIMATO

# nel nostro caso il modello stimato �: Y= 4587.3854+8.3503X

#entrambi i test t sui coefficienti b0 e b1 presentano un p-value <0
# quindi si ha alta evidenza statistica per rifiutare l'ipotesi nulla che il singolo coefficiente sia uguale a zero
# ovvero: 
#	 - l'intercetta � statisticamente diversa da zero
#	 - il predittore risulta statisticamente rilevante nel modello 

#R^2 = 0.97, indica che il modello spiega il 97% della variabilit� di Y
# si pu� quindi ritenere un buon modello

########### TABELLA ANOVA PIU' DETTAGLIATA

# per ottenere una tabella ANOVA pi� dettagliata possiamo usare due funzioni
# anova () oppure
# aov ()   questa con sintassi analoga ad lm
#entrambe producono medesimo risultato

result.aov=anova(result)
result.aov

anova.table=aov(Y~X,data=dati)
summary(anova.table)

#otteniamo: 
# - valori delle somme degli scarti al quadrato (sum sq)
# - errori quadratici medi (mean sq)
# - il valore della statistica F (F value)
# - il p-value associato al relativo test (Pr>F)

################ estrazione del ERRORE STANDARD DEI RESIDUI
# Si osservi che la stima dello scarto quadratico medio, ovvero l'errore standard dei residui, 
# pu� essere ricavata dalla radice del Mean Square Error(relativo alla regressione)
# che si trova nella tabella di Anova e che possiamo estrarre nel seguente modo: 

#stima dell'errore standard dei residui

result.aov
sqrt(result.aov[2,3])

#ovvero sqrt(589072)