## Regressione lineare semplice e multipla ## 20/05/2026 # dati "insulate.dat" insulate<-read.table("Insulate.dat", col.names = c("when", "temp", "cons")) insulate$when<-as.factor(insulate$when) str(insulate) summary(insulate) attach(insulate) plot(temp, cons, pch=19, col=4) ### funzione lm() ## stima modello lineare con y="cons" e x="temp" ins.lm <- lm(cons ~ temp) ins.lm$coefficients # stime coefficienti (beta1, beta2) ## oppure coef(ins.lm) ins.lm$residuals[1] # residui: valori oss. - val. stimati ins.lm$fitted.values # fitted(ins.lm) summary(ins.lm) ## retta stimata: cons=5.4862-0.2902*temp plot(temp, cons, pch=19) abline(ins.lm) plot(ins.lm, which=1) plot(ins.lm, which=2) # predict: stima della media di Y # oppure previsione in corrispondenza di un nuovo valore di x ins.mean<-predict(ins.lm, interval="none") plot(temp, cons, pch=19) points(temp, ins.mean, pch=8, col=2) ## creo dei nuovi valori di temp new.data<-data.frame(temp=seq(-5, 15)) ## previsione per i nuovi valori di x ins.mean.new<-predict(ins.lm, newdata = new.data, interval = "none") plot(temp, cons, pch=19, xlim=range(new.data$temp)) points(new.data$temp, ins.mean.new, pch=8, col=2) lines(new.data$temp, ins.mean.new, col=2) ## intervalli di confidenza e previsione ins.confnew<-predict(ins.lm, newdata = new.data, interval = "confidence") ins.prev<-predict(ins.lm, newdata = new.data, interval = "prediction") matplot(new.data$temp, ins.prev, type="l", lty=c("solid","dashed","dashed"), col=c("red","purple","purple"), xlab="temp", ylab="predicted y") matlines(new.data$temp, ins.confnew, type="l", lty=c("solid","dashed","dashed"), col=c("red","blue","blue")) points(temp, cons)