lorenzo — Dec 16, 2013, 10:15 AM
# definisco la directory di lavoro
setwd("/Users/lorenzo/Documents/Lavori guidati e corsi matematica/ST410 a.a. 2013-2014/Esercitazione6")
#Esercizio 1
test<-read.csv("test.csv")
modello_test <- lm(punteggio ~ stins, data=test)
# punto 1
modello_test
Call:
lm(formula = punteggio ~ stins, data = test)
Coefficients:
(Intercept) stins
698.93 -2.28
modello_test$coef
(Intercept) stins
698.93 -2.28
#punto 2
plot(test$stins, test$punteggio,xlab="Rapporto studenti/insegnanti", ylab="Punteggio nel test", pch=16)
abline(modello_test, col="red", lwd=3)
#punto 3
confint(modello_test, level=0.975)
1.25 % 98.75 %
(Intercept) 677.636 720.2
stins -3.359 -1.2
# per controllo
n<-length(test$stins)
U<-test$punteggio-modello_test$coef[1]-modello_test$coef[2]*test$stins #residui dell'interpolazione
S2<-(1/(n-2)) *sum(U^2 ) #stimatore della varianza sigma
D<-sum((test$stins-mean(test$stins))^2) #devianza di x
estremo_inferiore<-modello_test$coef[2]-sqrt(S2/D)*qt(0.9875,df=n-2)
estremo_superiore<- modello_test$coef[2]+sqrt(S2/D)*qt(0.9875,df=n-2)
sqrt(S2)-summary(modello_test)$sigma<10^(-13)
[1] TRUE
(sqrt(S2/D)-summary(modello_test)$coefficients[2,2])<10^(-13)
[1] TRUE
# punto 4
summary(modello_test)
Call:
lm(formula = punteggio ~ stins, data = test)
Residuals:
Min 1Q Median 3Q Max
-47.73 -14.25 0.48 12.82 48.54
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 698.93 9.47 73.82 < 2e-16 ***
stins -2.28 0.48 -4.75 2.8e-06 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 18.6 on 418 degrees of freedom
Multiple R-squared: 0.0512, Adjusted R-squared: 0.049
F-statistic: 22.6 on 1 and 418 DF, p-value: 2.78e-06
# H_0 si puo' rifiutare dato che il p-value per "stins" e' minore di 0.1%
# per controllo: calcoliamo il t value (per beta_0=0) e verifichiamo che sia minore di -qt(0.9995,df=n-2)
t<-modello_test$coef[2]/sqrt(S2/D)
-qt(0.9995,df=n-2)
[1] -3.314
#Esercizio 2
summary(modello_test)$r.squared
[1] 0.05124
# per controllo: calcoliamo l'r quadro a partire dalla definizione, usando i valori interpolati
devianza_valori_interpolati <-sum((modello_test$fitted.values - mean(test$punteggio))^2)
devianza_totale<-sum((test$punteggio-mean(test$punteggio))^2)
devianza_valori_interpolati/devianza_totale
[1] 0.05124
#Esercizio 3
ore_lavoro<-c(29,31,33,33,35,34,34,36,37,39,39,39,40,41,40,42,42)
salario<-c(13,13.75,14.1,14.98,15,15.1,15.1,16.2,17,21,21.5,21.5,23.3,24,24.35,31.2,32)
modello_salario<-lm(salario~ore_lavoro)
summary(modello_salario)
Call:
lm(formula = salario ~ ore_lavoro)
Residuals:
Min 1Q Median 3Q Max
-2.995 -1.466 -0.792 0.456 5.166
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -30.61 5.90 -5.19 0.00011 ***
ore_lavoro 1.37 0.16 8.56 3.7e-07 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 2.53 on 15 degrees of freedom
Multiple R-squared: 0.83, Adjusted R-squared: 0.819
F-statistic: 73.2 on 1 and 15 DF, p-value: 3.73e-07
plot(ore_lavoro, modello_salario$residuals, pch=3, xlab="Ore lavorate", ylab="Residui della regressione")