5.3 Come calcolare le previsioni per un modello di regressione lineare

Uno dei motivi della popolarità del modello di regressione lineare consiste nella possibilità di calcolare previsioni in relazione a scenari che non sono stati necessariamente osservati nel campione. Nel corso abbiamo visto che esistono due tipi di previsioni, quella per il valor medio della variabile dipendente e quella per il valore individuale, le quali differiscono per il diverso standard error, nel secondo caso maggiore che nel primo.

R permette di calcolare le previsioni per un modello di regressione lineare attraverso la funzione predict(), la quale richiede vengano specificati i seguenti argomenti:

  • object, ovvero l’oggetto restituito dalla funzione lm() contenente i risultati della stima
  • newdata, che indica un nuovo data frame contenente i valori delle variabili indipendenti da utilizzare per il calcolo delle previsioni
  • interval, che può assumere solo tre possibili valori, ovvero confidence se si desidera calcolare gli intervalli di confidenza per la previsione del valore medio, prediction se si desidera calcolare gli intervalli di previsione per i valori individuali, none se non si vuole calcolare nessun intervallo
  • level, il quale consente di specificare il livello di confidenza per il calcolo degli intervalli di confidenza o previsione

Bisogna porre particolare attenzione nell’uso della funzione predict(), soprattutto nello specificare correttamente il data frame newdata. Questo data frame può contenere un numero arbitrario di righe, ognuna delle quali si riferisce ad uno scenario (ovvero ad una combinazione di valori delle variabili indipendenti) in cui si intende calcolare la previsione, ma deve contenere lo stesso numero di colonne inserite nel modello. Le colonne di newdata devono essere obbligatoriamente denominate con gli stessi nomi delle variabili nel modello stimato. In caso contrario, R non riuscirà ad associare le variabili inserite nel modello con quelle incluse nel data frame newdata. Supponiamo per esempio che, con riferimento al modello multiplo comp_m2, ci interessi calcolare le previsioni e i relativi intervalli di previsione al 95% per i seguenti due scenari44:

> data_for_predict <- data.frame(ownprice = c(1.60, 1.80),
+                                comp1price = c(1.65, 1.90),
+                                comp2price = c(1.50, 1.75))
> data_for_predict
  ownprice comp1price comp2price
1      1.6       1.65       1.50
2      1.8       1.90       1.75

Il data frame data_for_predict contiene quindi due righe, una per ciascun scenario, e tre colonne i cui nomi corrispondono a quelli del data frame contenente il campione (ovvero comp). Ora usiamo la funzione predict() per calcolare le previsioni:

> predict(object = comp_m2, newdata = data_for_predict,
+     interval = "prediction", level = 0.95)
      fit     lwr     upr
1 0.03019 0.01020 0.05018
2 0.03298 0.01296 0.05301

L’output restituito da predict() consiste in una matrice con due righe corrispondenti ai due scenari considerati e tre colonne contenenti rispettivamente le previsioni (fit) e i limiti degli intervalli di previsione (lwr e upr).


  1. Il segno + che vedete all’inizio della seconda e terza riga di codice viene aggiunto da R e indica semplicemente che il codice nella prima linea prosegue nelle righe successive, ma non dovete scriverlo quando provate a riprodurre il codice.