# R: la funzione predict() per la modellazione predittiva

La funzione `predict()` in R svolge un compito particolare nel contesto dell’apprendimento automatico, in quanto permette di calcolare previsioni per dati nuovi, non ancora incontrati.

## A cosa serve la funzione `predict()` in R?

La funzione `predict()` in R è uno strumento versatile, utilizzato nella modellazione predittiva. Serve a generare **previsioni per punti di dati nuovi o già presenti** sulla base di un modello statistico già progettato. Questo modello può essere creato, ad esempio, mediante regressione lineare, regressione logistica, alberi decisionali o altre tecniche di modellazione.

## Come è strutturata la funzione `predict()` in R

La funzione `predict()` accetta come argomenti il **modello addestrato e i punti di dati** per i quali devono essere calcolate le previsioni. A seconda del tipo del modello è possibile specificare diverse opzioni e parametri. Il risultato è un vettore di previsioni che può essere poi utile per diversi scopi di analisi. Questi comprendono la valutazione delle prestazioni del modello, il processo decisionale o la visualizzazione dei dati risultanti.

```R
predict(object, newdata, interval)
```

- **object**: il modello addestrato sul quale devono essere applicate le previsioni.
- **newdata**: i punti di dati per le previsioni
- **interval**: argomento opzionale per indicare il tipo di intervallo di confidenza (`confidence` per i valori medi, `prediction` per le previsioni)

## Esempio di applicazione della funzione `predict` in R

L’esempio seguente mostra il funzionamento di `predict()` in R. A tal fine utilizziamo un record di dati personalizzato con valori di velocità e distanza.

### Creazione e visualizzazione dei dati

```R
# Creating a data frame with custom speed and distance values
custom_data <- data.frame(speed = c(15, 20, 25, 30, 35),
    distance = c(30, 40, 50, 60, 70))
# Displaying the custom data frame
print("Custom Data Frame:")
print(custom_data)
```

Nel primo passaggio di questo esempio costruiamo un **record di dati personalizzato** per analizzare la relazione fra velocità (`speed`) e distanza percorsa (`distance`). A tal fine utilizziamo la funzione `data.frame()` per creare un frame di dati. Con `c(15, 20, 25, 30, 35)` e `c(30, 40, 50, 60, 70)` definiamo dei valori concreti per le variabili `speed` e `distance`.

Dopo aver creato il record di dati, lo visualizziamo per mezzo della funzione `print()`. In questo modo è possibile verificare visivamente la struttura e i valori assegnati del nuovo frame di dati.

Output:

```R
"Custom Data Frame:"
    speed distance
1        15        30
2        20        40
3        25        50
4        30        60
5        35        70
```

### Creazione di un modello lineare

```R
# Creating a linear model for the custom data frame
custom_model <- lm(distance ~ speed, data = custom_data)
# Printing the model results
print("Model Results:")
print(summary(custom_model))
```

Output:

```R
"Model Results:"
Call:
lm(formula = distance ~ speed, data = custom_data)
Residuals:
     1        2        3        4        5
    -2     -1        1        0        2
Coefficients:
(Intercept)     -10.00    15.81    -0.632    0.55897
speed                         2.00        0.47            4.254    0.01205
```

Nell’output si riconosce un modello lineare (`custom_model`) che è stato generato per il record di dati e che modella la relazione fra velocità e distanza. Otteniamo quindi i risultati del modello, inclusi i coefficienti e le informazioni statistiche.

### Definizione di nuovi valori di velocità e calcolo delle previsioni

```R
# Creating a data frame with new speed values
new_speed_values <- data.frame(speed = c(40, 45, 50, 55, 60))
# Predicting future distance values using the linear model
predicted_distance <- predict(custom_model, newdata = new_speed_values)
```

Ora definiamo un ulteriore record di dati (`new_speed_values`) con nuovi valori di velocità. Successivamente, con `predict()` in R vengono calcolate le previsioni per i relativi valori di distanza utilizzando il modello lineare creato in precedenza.

### Visualizzazione delle previsioni

```R
# Displaying the predicted values
print("Predicted Distance Values:")
print(predicted_distance)
```

L’output ci mostra i valori di distanza previsti a seconda della velocità:

```R
"Predicted Distance Values:"
               1                2                  3                 4                   5
 80.0000     90.0000    100.0000  110.0000     120.0000
```

Consiglio Se vuoi sapere come elaborare le stringhe in R per la manipolazione dei testi e la pulizia dei dati, segui i tutorial su [gsub e sub in R](https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/funzioni-sub-e-gsub-in-r/) e [substring in R](https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/r-substring/) che trovi nella nostra guida.


This is a markdown version of: [https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/predict-in-r/](https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/predict-in-r/) for AI/LLM consumption.