lab 4_LRM seconda parte
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)