Regressione lineare multipla in R: semplice e graduale con esempi
โก Riepilogo intelligente
In R, la regressione lineare semplice e multipla modella un risultato continuo come somma ponderata di predittori stimati con il metodo dei minimi quadrati ordinari. Questa guida illustra la funzione lm(), la lettura dei coefficienti, i predittori fattoriali, la diagnostica dei residui, la previsione e la selezione automatica delle variabili.

Dove si colloca la regressione lineare nell'apprendimento automatico
La regressione lineare รจ uno dei metodi di apprendimento supervisionato piรน antichi machine learning algoritmi, ed รจ ancora il primo modello a cui la maggior parte degli analisti ricorre. Una delle prime applicazioni di apprendimento automatico รจ stata filtro antispam.
Altre applicazioni comuni dell'apprendimento automatico includono:
- Identificazione dei messaggi di spam indesiderati nella posta elettronica
- Segmentazione del comportamento dei clienti per pubblicitร mirata
- Riduzione delle transazioni fraudolente con carta di credito
- Ottimizzazione del consumo energetico in case ed edifici adibiti a uffici.
- Riconoscimento facciale
Apprendimento supervisionato
In Apprendimento supervisionato, i dati di addestramento forniti all'algoritmo includono un'etichetta.
Classificazione ร probabilmente la tecnica di apprendimento supervisionato piรน utilizzata. Uno dei primi compiti di classificazione affrontati dai ricercatori รจ stato il filtro antispam. L'obiettivo dell'apprendimento รจ prevedere se un'email verrร classificata come spam o come legittima (ham). La macchina, dopo la fase di addestramento, รจ in grado di rilevare la classe dell'email.
regressioni sono comunemente utilizzati nel campo dell'apprendimento automatico per prevedere valori continui. Un'attivitร di regressione puรฒ prevedere il valore di un variabile dipendente basato su un insieme di variabili indipendenti (chiamati anche predittori o regressori). Ad esempio, le regressioni lineari possono prevedere il prezzo delle azioni, le previsioni del tempo, le vendite e cosรฌ via.
Alcuni algoritmi fondamentali di apprendimento supervisionato sono:
- Regressione lineare
- Regressione logistica
- Vicini piรน vicini
- Supporta la macchina vettoriale (SVM)
- Alberi decisionali e foresta casuale
- Reti neurali
Apprendimento senza supervisione
In Apprendimento senza supervisione, i dati di addestramento sono senza etichetta. Il sistema tenta di apprendere senza riferimento. Di seguito รจ riportato un elenco di algoritmi di apprendimento non supervisionato.
- K-significa
- Hierarchical Cluster Analisi
- Massimizzazione delle aspettative
- Visualizzazione e riduzione della dimensionalitร
- Analisi del componente principale
- PCA del kernel
- Incorporamento localmente lineare
Con questo presupposto, il resto di questo tutorial illustra come costruire modelli di regressione in R passo dopo passo.
Regressione lineare semplice in R
La regressione lineare risponde a una semplice domanda: รจ possibile misurare una relazione precisa tra una variabile target e un insieme di variabili predittive?
Il modello probabilistico piรน semplice รจ il modello lineare:
where
- y = variabile dipendente
- x = Variabile indipendente
-
= componente di errore casuale
-
= intercettare
-
= Coefficiente di x
Consideriamo il seguente grafico:
L'equazione รจ In questa equazione l'intercetta รจ 4.77, quindi quando x รจ uguale a 0 il valore stimato di y รจ 4.77. La pendenza indica in quale proporzione varia y al variare di x.
Per stimare i valori ottimali di and
, usi un metodo chiamato Minimi quadrati ordinari (OLS). Questo metodo cerca di trovare i parametri che minimizzano la somma degli errori quadrati, ovvero la distanza verticale tra i valori y previsti e i valori y effettivi. La differenza รจ nota come termine di errore.
Prima di stimare il modello, รจ possibile determinare se una relazione lineare tra y e x รจ plausibile tracciando un grafico a dispersione.
Grafico a dispersione
Utilizzeremo un set di dati molto semplice per spiegare il concetto di regressione lineare semplice. Importeremo le altezze e i pesi medi per le donne americane. Il set di dati contiene 15 osservazioni. Vuoi misurare se le altezze sono correlate positivamente con i pesi.
library(ggplot2) path <- 'https://raw.githubusercontent.com/guru99-edu/R-Programming/master/women.csv' df <-read.csv(path) ggplot(df,aes(x=height, y = weight))+ geom_point()
Produzione:
Il grafico a dispersione suggerisce una tendenza generale all'aumento del peso con l'aumentare dell'altezza. Nel passaggio successivo, misurerete di quanto aumenta il peso per ogni unitร aggiuntiva di altezza.
Stime dei minimi quadrati
In una semplice regressione OLS, il calcolo di and
ร semplice. Questo tutorial non ricava le formule, si limita a enunciarle.
Vuoi stimare:
L'obiettivo della regressione OLS รจ minimizzare la seguente equazione:
where
รจ il valore effettivo e
รจ il valore previsto.
La soluzione per is
Si noti che indica il valore medio di x
La soluzione per is
In R, รจ possibile utilizzare le funzioni cov() e var() per stimare e puoi usare la funzione mean() per stimare
beta <- cov(df$height, df$weight) / var (df$height) beta
Produzione:
##[1] 3.45
alpha <- mean(df$weight) - beta * mean(df$height) alpha
Produzione:
## [1] -87.51667
Il coefficiente beta implica che per ogni pollice di altezza in piรน, il peso medio aumenta di 3.45 libbre.
Stimare manualmente un'equazione lineare รจ istruttivo ma poco pratico. R La funzione `lm()` viene fornita per eseguire questa operazione, e la utilizzerete a partire dalla prossima sezione. Nei progetti reali, รจ raro utilizzare un modello con un solo predittore; le attivitร di regressione normalmente coinvolgono molti stimatori contemporaneamente.
Regressione lineare multipla in R
Le applicazioni pratiche dell'analisi di regressione utilizzano modelli piรน complessi del semplice modello lineare. Il modello probabilistico che include piรน di una variabile indipendente รจ chiamato modelli di regressione multipla. La forma generale di questo modello รจ:
Nella notazione matriciale, puoi riscrivere il modello:
La variabile dipendente y รจ ora una funzione di k variabili indipendenti. Il valore del coefficiente determina il contributo della variabile indipendente
and
.
Introduciamo brevemente l'ipotesi che abbiamo fatto sull'errore casuale dell'OLS:
- Media pari a 0
- Varianza pari a
- Distribuzione normale
- Gli errori casuali sono indipendenti (in senso probabilistico)
Devi risolvere per , il vettore dei coefficienti di regressione che minimizzano la somma degli errori quadratici tra i valori y previsti e quelli effettivi.
La soluzione in forma chiusa รจ:
con:
- indica il trasporre della matrice X
indica il matrice invertibile
Gli esempi seguenti utilizzano il dataset integrato mtcars. L'obiettivo รจ prevedere il consumo di carburante (miglia per gallone, mpg) a partire da una serie di caratteristiche.
Variabili continue in R
Per ora, userete solo le variabili continue e metterete da parte le caratteristiche categoriali. La variabile am รจ una variabile binaria che assume il valore 1 se la trasmissione รจ manuale e 0 per le auto automatiche; anche vs รจ una variabile binaria.
library(dplyr) df <- mtcars %>% select(-c(am, vs, cyl, gear, carb)) glimpse(df)
Produzione:
## Observations: 32 ## Variables: 6 ## $ mpg <dbl> 21.0, 21.0, 22.8, 21.4, 18.7, 18.1, 14.3, 24.4, 22.8, 19.... ## $ disp <dbl> 160.0, 160.0, 108.0, 258.0, 360.0, 225.0, 360.0, 146.7, 1... ## $ hp <dbl> 110, 110, 93, 110, 175, 105, 245, 62, 95, 123, 123, 180, ... ## $ drat <dbl> 3.90, 3.90, 3.85, 3.08, 3.15, 2.76, 3.21, 3.69, 3.92, 3.9... ## $ wt <dbl> 2.620, 2.875, 2.320, 3.215, 3.440, 3.460, 3.570, 3.190, 3... ## $ qsec <dbl> 16.46, 17.02, 18.61, 19.44, 17.02, 20.22, 15.84, 20.00, 2...
ร possibile utilizzare la funzione lm() per calcolare i parametri. La sintassi di base di questa funzione รจ:
lm(formula, data, subset)
Arguments:
-formula: The equation you want to estimate
-data: The dataset used
-subset: Estimate the model on a subset of the dataset
Ricorda che un'equazione ha la seguente forma
in r
- Il simbolo = รจ sostituito da ~
- Ogni x รจ sostituita dal nome della variabile
- Se vuoi eliminare la costante, aggiungi -1 alla fine della formula
Esempio:
Vuoi stimare il peso delle persone in base alla loro altezza e alle loro entrate. L'equazione รจ
L'equazione in R รจ scritta come segue:
y ~ X1+ X2+โฆ+Xn # Con intercetta
Quindi per il nostro esempio:
- Pesare ~ altezza + entrate
Il tuo obiettivo รจ stimare il miglio per gallone in base a una serie di variabili. Lโequazione da stimare รจ:
Stimerai la tua prima regressione lineare e memorizzerai il risultato nell'oggetto adattato.
model <- mpg ~ disp + hp + drat + wt + qsec
fit <- lm(model, df)
fit
Code Spiegazione
- modello <- mpg ~ disp + hp + drat + wt + qsec: memorizza il modello da stimare
- lm(modello, df): stima il modello con il frame di dati df
## ## Call: ## lm(formula = model, data = df) ## ## Coefficients: ## (Intercept) disp hp drat wt ## 16.53357 0.00872 -0.02060 2.01577 -4.38546 ## qsec ## 0.64015
L'output non fornisce informazioni sufficienti sulla qualitร dell'adattamento. ร possibile accedere a maggiori dettagli, come la significativitร dei coefficienti, il grado di libertร e la forma dei residui, con la funzione summary().
summary(fit)
Produzione:
## return the p-value and coefficient ## ## Call: ## lm(formula = model, data = df) ## ## Residuals: ## Min 1Q Median 3Q Max ## -3.5404 -1.6701 -0.4264 1.1320 5.4996 ## ## Coefficients: ## Estimate Std. Error t value Pr(>|t|) ## (Intercept) 16.53357 10.96423 1.508 0.14362 ## disp 0.00872 0.01119 0.779 0.44281 ## hp -0.02060 0.01528 -1.348 0.18936 ## drat 2.01578 1.30946 1.539 0.13579 ## wt -4.38546 1.24343 -3.527 0.00158 ** ## qsec 0.64015 0.45934 1.394 0.17523 ## --- ## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 ## ## Residual standard error: 2.558 on 26 degrees of freedom ## Multiple R-squared: 0.8489, Adjusted R-squared: 0.8199 ## F-statistic: 29.22 on 5 and 26 DF, p-value: 6.892e-10
Inferenza dall'output della tabella precedente
- La tabella mostra una forte correlazione negativa tra wt e mpg e un coefficiente positivo per drat.
- Solo la variabile wt ha un impatto statistico sul mpg. Ricorda, per testare un'ipotesi in statistica, usiamo:
- H0: Nessun impatto statistico
- H1: il predittore ha un impatto significativo su y
- Se il valore p รจ inferiore a 0.05, indica che la variabile รจ statisticamente significativa
- R-quadro corretto: la quota di varianza di y spiegata dal modello, corretta per il numero di predittori. In questo caso รจ 0.8199, quindi il modello spiega circa l'82% della varianza di mpg. L'R-quadro รจ sempre compreso tra 0 e 1, e un valore piรน alto รจ migliore.
ร possibile eseguire il ANOVA test per stimare l'effetto di ciascuna caratteristica sulle varianze con la funzione anova().
anova(fit)
Produzione:
## Analysis of Variance Table ## ## Response: mpg ## Df Sum Sq Mean Sq F value Pr(>F) ## disp 1 808.89 808.89 123.6185 2.23e-11 *** ## hp 1 33.67 33.67 5.1449 0.031854 * ## drat 1 30.15 30.15 4.6073 0.041340 * ## wt 1 70.51 70.51 10.7754 0.002933 ** ## qsec 1 12.71 12.71 1.9422 0.175233 ## Residuals 26 170.13 6.54 ## --- ## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Un modo piรน convenzionale per stimare le prestazioni del modello รจ visualizzare il residuo rispetto a misure diverse.
Puoi utilizzare la funzione plot() per mostrare quattro grafici:
โ Residui vs valori adattati
โ Grafico QQ normale: quartile teorico vs residui standardizzati
โ Posizione della scala: valori stimati rispetto alle radici quadrate dei residui standardizzati
โ Residui vs Leva: Leva vs Residui standardizzati
Aggiungi il codice par(mfrow = c(2, 2)) prima di plot(fit). Se non aggiungi questa riga di codice, R ti chiederร di premere il comando Invio per visualizzare il grafico successivo.
par(mfrow = c(2, 2))
Code Spiegazione
- (mfrow=c(2,2)): restituisce una finestra con i quattro grafici affiancati.
- I primi 2 aggiungono il numero di righe
- Il secondo 2 aggiunge il numero di colonne.
- Se scrivi (mfrow=c(3,2)): creerai una finestra di 3 righe e 2 colonne
plot(fit)
Produzione:
La formula lm() restituisce un elenco contenente molte informazioni utili. ร possibile accedervi con l'oggetto fit creato, seguito dal segno $ e dalle informazioni che si desidera visualizzare.tract.
โ coefficienti: `coefficienti$di adattamento`
โ residui: `fit$residui`
โ valore adattato: `fit$fitted.values`
Regressione ai fattori in R
Nell'ultima stima del modello, si regredisce mpg solo su variabili continue. ร semplice aggiungere variabili fattore al modello. Aggiungi la variabile am al tuo modello. ร importante assicurarsi che la variabile sia a livello di fattore e non continua.
df <- mtcars %>%
mutate(cyl = factor(cyl),
vs = factor(vs),
am = factor(am),
gear = factor(gear),
carb = factor(carb))
model <- mpg ~ .
summary(lm(model, df))
Produzione:
## ## Call: ## lm(formula = model, data = df) ## ## Residuals: ## Min 1Q Median 3Q Max ## -3.5087 -1.3584 -0.0948 0.7745 4.6251 ## ## Coefficients: ## Estimate Std. Error t value Pr(>|t|) ## (Intercept) 23.87913 20.06582 1.190 0.2525 ## cyl6 -2.64870 3.04089 -0.871 0.3975 ## cyl8 -0.33616 7.15954 -0.047 0.9632 ## disp 0.03555 0.03190 1.114 0.2827 ## hp -0.07051 0.03943 -1.788 0.0939 . ## drat 1.18283 2.48348 0.476 0.6407 ## wt -4.52978 2.53875 -1.784 0.0946 . ## qsec 0.36784 0.93540 0.393 0.6997 ## vs1 1.93085 2.87126 0.672 0.5115 ## am1 1.21212 3.21355 0.377 0.7113 ## gear4 1.11435 3.79952 0.293 0.7733 ## gear5 2.52840 3.73636 0.677 0.5089 ## carb2 -0.97935 2.31797 -0.423 0.6787 ## carb3 2.99964 4.29355 0.699 0.4955 ## carb4 1.09142 4.44962 0.245 0.8096 ## carb6 4.47757 6.38406 0.701 0.4938 ## carb8 7.25041 8.36057 0.867 0.3995 ## --- ## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 ## ## Residual standard error: 2.833 on 15 degrees of freedom ## Multiple R-squared: 0.8931, Adjusted R-squared: 0.779 ## F-statistic: 7.83 on 16 and 15 DF, p-value: 0.000124
R utilizza il primo livello di fattore come gruppo base. ร necessario confrontare i coefficienti dell'altro gruppo con il gruppo base.
Presupposti della regressione lineare in R
Il metodo dei minimi quadrati ordinari produce coefficienti e valori p affidabili solo se vengono soddisfatte cinque condizioni. I quattro grafici diagnostici prodotti da plot(fit) servono proprio a verificarle.
- Linearitร : la relazione tra ciascun predittore e y รจ lineare. Controlla il Residui vs. Adattati grafico; una curva visibile indica la necessitร di una trasformazione o di un termine polinomiale.
- Indipendenza: I termini di errore non sono correlati. I dati ordinati temporalmente spesso violano questa condizione, che รจ possibile verificare con la funzione durbinWatsonTest() del pacchetto car.
- omoschedasticitร : la varianza dell'errore รจ costante tra i valori adattati. Una forma a imbuto nel Scala-Posizione Il grafico segnala una violazione.
- Normalitร dei residui: gli errori seguono una distribuzione normale. I punti dovrebbero trovarsi sulla diagonale della QQ normale tracciare.
- Nessuna multicollinearitร : I predittori non sono quasi identici tra loro. Un fattore di inflazione della varianza superiore a 5 รจ solitamente la soglia di allarme.
library(car) vif(fit) # variance inflation factors shapiro.test(residuals(fit)) # normality of residuals
Le violazioni non sempre invalidano un modello, ma modificano il grado di affidabilitร dei valori p, quindi รจ opportuno verificarle prima di riportare qualsiasi coefficiente.
Come effettuare previsioni con un modello di regressione lineare in R
L'adattamento di un modello รจ solo metร del lavoro. La funzione predict() applica i coefficienti stimati alle nuove osservazioni.
predict(object, newdata, interval = "none", level = 0.95) arguments: -object: The model returned by lm() -newdata: A data frame whose columns match the predictors used in the formula -interval: "none", "confidence" for the mean response, or "prediction" for a single new case -level: The confidence level, 0.95 by default
Segui questi tre passaggi.
- Crea un dataframe di nuovi casi. I nomi delle colonne devono corrispondere esattamente ai nomi dei predittori nella formula e i livelli dei fattori devono corrispondere ai dati di addestramento.
- Chiamare predict(). Passa l'oggetto adattato e il nuovo data frame.
- Aggiungi un intervallo. Scegli "affidabilitร " quando desideri conoscere l'incertezza relativa alla risposta media e "previsione" quando desideri conoscere l'intervallo di valori per una singola auto.
new_cars <- data.frame(wt = c(2.5, 3.2), hp = c(110, 175)) fit_final <- lm(mpg ~ wt + hp, data = mtcars) predict(fit_final, newdata = new_cars) predict(fit_final, newdata = new_cars, interval = "prediction")
Lettura del risultato. Si prevede che un'auto del peso di 2.5 mila libbre con 110 cavalli abbia un consumo di circa 24.1 miglia per gallone. L'intervallo di previsione รจ sempre piรน ampio dell'intervallo di confidenza, perchรฉ include l'incertezza di una singola osservazione oltre all'incertezza della retta di regressione.
Due regole garantiscono l'accuratezza delle previsioni. Non estrapolare mai al di fuori dell'intervallo dei predittori utilizzati per l'addestramento, perchรฉ la retta di regressione non trova riscontro al di fuori di tale intervallo. E valutare sempre i risultati su dati che il modello non ha mai visto, altrimenti l'errore riportato sarร ottimistico.
Regressione lineare vs regressione logistica in R
Gli analisti spesso ricorrono alla funzione lm() quando il risultato non รจ continuo. La tabella seguente mostra dove si trova il confine.
| Criteri | Regressione lineare | Regressione logistica |
|---|---|---|
| Variabile di risposta | Educazione | Binario o categoriale |
| Output previsto | Qualsiasi numero reale | Una probabilitร compresa tra 0 e 1 |
| stima | Minimi quadrati ordinari | Massima verosimiglianza |
| Misura adatta | R-quadro, RMSE | AIC, devianza, accuratezza |
| funzione R | lm(formula, dati) | glm(formula, dati, famiglia = โbinomialeโ) |
Se il risultato รจ una decisione sรฌ o no, passare alla modello lineare generalizzato invece di forzare una linea retta attraverso zeri e uno.
Regressione lineare graduale in R
L'ultima parte di questo tutorial riguarda il regressione graduale algoritmo. Lo scopo di questo algoritmo รจ aggiungere e rimuovere potenziali candidati nei modelli e mantenere quelli che hanno un impatto significativo sulla variabile dipendente. Questo algoritmo รจ significativo quando il set di dati contiene un ampio elenco di predittori. Non รจ necessario aggiungere e rimuovere manualmente le variabili indipendenti. La regressione stepwise รจ costruita per selezionare i migliori candidati per adattarsi al modello.
Vediamo come funziona nella pratica. Utilizzeremo il dataset mtcars con le variabili continue solo a scopo didattico. Prima di iniziare l'analisi, รจ buona norma esaminare le relazioni tra i dati con una matrice di correlazione. La libreria GGally รจ un'estensione di ggplot2.
La libreria include diverse funzioni per mostrare statistiche riassuntive come la correlazione e la distribuzione di tutte le variabili in una matrice. Utilizzeremo la funzione ggscatmat, ma puoi fare riferimento al file vignette per ulteriori informazioni sulla biblioteca GGally.
La sintassi di base per ggscatmat() รจ:
ggscatmat(df, columns = 1:ncol(df), corMethod = "pearson") arguments: -df: A matrix of continuous variables -columns: Pick up the columns to use in the function. By default, all columns are used -corMethod: Define the function to compute the correlation between variable. By default, the algorithm uses the Pearson formula
Si visualizza la correlazione per tutte le variabili e si decide quali sono le migliori candidate per il primo passaggio della regressione stepwise. Esistono alcune forti correlazioni tra le variabili e la variabile dipendente, mpg.
library(GGally) df <- mtcars %>% select(-c(am, vs, cyl, gear, carb)) ggscatmat(df, columns = 1: ncol(df))
Produzione:
Esempio di regressione graduale passo dopo passo
La selezione delle variabili รจ una parte importante dell'adattamento di un modello e la regressione stepwise esegue automaticamente questa ricerca. Per stimare quante scelte possibili ci sono nel dataset, si calcola con k รจ il numero di predittori. La quantitร di possibilitร aumenta con il numero di variabili indipendenti. Ecco perchรฉ รจ necessario disporre di una ricerca automatica.
ร necessario installare il pacchetto olsrr da CRAN. Il pacchetto non รจ ancora disponibile in Anaconda. Quindi, lo installi direttamente dalla riga di comando:
install.packages("olsrr")
ร possibile tracciare tutti i sottoinsiemi di possibilitร con i criteri di adattamento (ad esempio R-quadrato, R-quadrato corretto, criteri bayesiani). Il modello con i criteri AIC piรน bassi sarร il modello finale.
library(olsrr) model <- mpg~. fit <- lm(model, df) test <- ols_all_subset(fit) plot(test)
Code Spiegazione
- mpg ~.: Costruisci il modello da stimare
- lm(modello, df): Esegui il modello OLS
- ols_all_subset(adattamento): Costruisci i grafici con le informazioni statistiche pertinenti
- tracciare(prova): Traccia i grafici
Produzione:
I modelli di regressione lineare utilizzano il test t Per stimare l'impatto statistico di una variabile indipendente sulla variabile dipendente, i ricercatori impostano comunemente la soglia massima al 10%, e valori p piรน bassi indicano un legame statistico piรน forte. La regressione stepwise si basa su questo test per aggiungere e rimuovere potenziali predittori. L'algoritmo funziona come segue:

- Fase 1: regredisce ciascun predittore su y separatamente. Vale a dire, regredire x_1 su y, x_2 su y a x_n. Conservare il p-value e mantenere il regressore con un valore p inferiore a una soglia definita (0.1 per impostazione predefinita). I predittori con significativitร inferiore alla soglia verranno aggiunti al modello finale. Se nessuna variabile ha un valore p inferiore alla soglia di immissione, l'algoritmo si interrompe e si ottiene il modello finale solo con una costante.
- Fase 2: Utilizza il predittore con il valore p piรน basso e aggiungi separatamente una variabile. Regredisci una costante, il miglior predittore del passaggio uno e una terza variabile. Aggiungi al modello stepwise i nuovi predittori con un valore inferiore alla soglia di ingresso. Se nessuna variabile ha un valore p inferiore a 0.1, l'algoritmo si ferma e hai il tuo modello finale con un solo predittore. Regredisci il modello stepwise per controllare la significativitร dei migliori predittori del passaggio 1. Se รจ superiore alla soglia di rimozione, lo mantieni nel modello stepwise. Altrimenti, lo escludi.
- Fase 3: Si replica il passaggio 2 sul nuovo modello stepwise migliore. L'algoritmo aggiunge predittori al modello stepwise in base ai valori immessi ed esclude il predittore dal modello stepwise se non soddisfa la soglia di esclusione.
- L'algoritmo continua finchรฉ non รจ possibile aggiungere o escludere alcuna variabile.
ร possibile eseguire l'algoritmo con la funzione ols_stepwise() del pacchetto olsrr.
ols_stepwise(fit, pent = 0.1, prem = 0.3, details = FALSE) arguments: -fit: Model to fit. Need to use `lm()`before to run `ols_stepwise() -pent: Threshold of the p-value used to enter a variable into the stepwise model. By default, 0.1 -prem: Threshold of the p-value used to exclude a variable into the stepwise model. By default, 0.3 -details: Print the details of each step
โ ๏ธ Nota sulla confezione: Le versioni recenti di olsrr hanno rinominato queste funzioni. Utilizzare ols_step_all_possible() al posto di ols_all_subset() e ols_step_both_p() al posto di ols_stepwise(). Gli argomenti e l'output rimangono invariati.
Prima di ciรฒ, ti mostriamo i passaggi dellโalgoritmo. Di seguito รจ riportata una tabella con le variabili dipendenti e indipendenti:
| Variabile dipendente | Variabili indipendenti |
|---|---|
| mpg | a disposizione |
| hp | |
| dra | |
| wt | |
| qsec |
Inizio
Per cominciare, l'algoritmo inizia eseguendo il modello separatamente su ciascuna variabile indipendente. La tabella mostra il valore p per ciascun modello.
## [[1]] ## (Intercept) disp ## 3.576586e-21 9.380327e-10 ## ## [[2]] ## (Intercept) hp ## 6.642736e-18 1.787835e-07 ## ## [[3]] ## (Intercept) drat ## 0.1796390847 0.0000177624 ## ## [[4]] ## (Intercept) wt ## 8.241799e-19 1.293959e-10 ## ## [[5] ## (Intercept) qsec ## 0.61385436 0.01708199
Per entrare nel modello, l'algoritmo mantiene la variabile con il valore p piรน basso. Dall'output sopra, รจ wt
Fase 1
Nella prima fase, l'algoritmo esegue mpg su wt e sulle altre variabili in modo indipendente.
## [[1]] ## (Intercept) wt disp ## 4.910746e-16 7.430725e-03 6.361981e-02 ## ## [[2]] ## (Intercept) wt hp ## 2.565459e-20 1.119647e-06 1.451229e-03 ## ## [[3]] ## (Intercept) wt drat ## 2.737824e-04 1.589075e-06 3.308544e-01 ## ## [[4]] ## (Intercept) wt qsec ## 7.650466e-04 2.518948e-11 1.499883e-03
Ogni variabile รจ una potenziale candidata per entrare nel modello finale. Tuttavia, l'algoritmo mantiene solo la variabile con il valore p piรน basso. Si scopre che hp ha un valore p leggermente inferiore a qsec, quindi hp entra nel modello finale.
Fase 2
L'algoritmo ripete il primo passaggio ma questa volta con due variabili indipendenti nel modello finale.
## [[1]] ## (Intercept) wt hp disp ## 1.161936e-16 1.330991e-03 1.097103e-02 9.285070e-01 ## ## [[2]] ## (Intercept) wt hp drat ## 5.133678e-05 3.642961e-04 1.178415e-03 1.987554e-01 ## ## [[3]] ## (Intercept) wt hp qsec ## 2.784556e-03 3.217222e-06 2.441762e-01 2.546284e-01
Nessuno dei candidati rimanenti ha un valore p inferiore alla soglia di ingresso. L'algoritmo si arresta qui e questo รจ il modello finale:
## ## Call: ## lm(formula = mpg ~ wt + hp, data = df) ## ## Residuals: ## Min 1Q Median 3Q Max ## -3.941 -1.600 -0.182 1.050 5.854 ## ## Coefficients: ## Estimate Std. Error t value Pr(>|t|) ## (Intercept) 37.22727 1.59879 23.285 < 2e-16 *** ## wt -3.87783 0.63273 -6.129 1.12e-06 *** ## hp -0.03177 0.00903 -3.519 0.00145 ** ## --- ## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 ## ## Residual standard error: 2.593 on 29 degrees of freedom ## Multiple R-squared: 0.8268, Adjusted R-squared: 0.8148 ## F-statistic: 69.21 on 2 and 29 DF, p-value: 9.109e-12
ร possibile utilizzare la funzione ols_stepwise() per confrontare i risultati.
stp_s <-ols_stepwise(fit, details=TRUE)
Produzione:
L'algoritmo trova una soluzione dopo due passaggi e restituisce lo stesso risultato della procedura manuale descritta sopra.
Il modello finale รจ quindi spiegato da due predittori e un'intercetta: il consumo di carburante (miglia per gallone) รจ correlato negativamente sia alla potenza lorda che al peso.
## You are selecting variables based on p value... ## 1 variable(s) added.... ## Variable Selection Procedure ## Dependent Variable: mpg ## ## Stepwise Selection: Step 1 ## ## Variable wt Entered ## ## Model Summary ## -------------------------------------------------------------- ## R 0.868 RMSE 3.046 ## R-Squared 0.753 Coef. Var 15.161 ## Adj. R-Squared 0.745 MSE 9.277 ## Pred R-Squared 0.709 MAE 2.341 ## -------------------------------------------------------------- ## RMSE: Root Mean Square Error ## MSE: Mean Square Error ## MAE: Mean Absolute Error ## ANOVA ## -------------------------------------------------------------------- ## Sum of ## Squares DF Mean Square F Sig. ## -------------------------------------------------------------------- ## Regression 847.725 1 847.725 91.375 0.0000 ## Residual 278.322 30 9.277 ## Total 1126.047 31 ## -------------------------------------------------------------------- ## ## Parameter Estimates ## ---------------------------------------------------------------------------------------- ## model Beta Std. Error Std. Beta t Sig lower upper ## ---------------------------------------------------------------------------------------- ## (Intercept) 37.285 1.878 19.858 0.000 33.450 41.120 ## wt -5.344 0.559 -0.868 -9.559 0.000 -6.486 -4.203 ## ---------------------------------------------------------------------------------------- ## 1 variable(s) added... ## Stepwise Selection: Step 2 ## ## Variable hp Entered ## ## Model Summary ## -------------------------------------------------------------- ## R 0.909 RMSE 2.593 ## R-Squared 0.827 Coef. Var 12.909 ## Adj. R-Squared 0.815 MSE 6.726 ## Pred R-Squared 0.781 MAE 1.901 ## -------------------------------------------------------------- ## RMSE: Root Mean Square Error ## MSE: Mean Square Error ## MAE: Mean Absolute Error ## ANOVA ## -------------------------------------------------------------------- ## Sum of ## Squares DF Mean Square F Sig. ## -------------------------------------------------------------------- ## Regression 930.999 2 465.500 69.211 0.0000 ## Residual 195.048 29 6.726 ## Total 1126.047 31 ## -------------------------------------------------------------------- ## ## Parameter Estimates ## ---------------------------------------------------------------------------------------- ## model Beta Std. Error Std. Beta t Sig lower upper ## ---------------------------------------------------------------------------------------- ## (Intercept) 37.227 1.599 23.285 0.000 33.957 40.497 ## wt -3.878 0.633 -0.630 -6.129 0.000 -5.172 -2.584 ## hp -0.032 0.009 -0.361 -3.519 0.001 -0.050 -0.013 ## ---------------------------------------------------------------------------------------- ## No more variables to be added or removed.
Regressione lineare in R: punti chiave e riferimento alle funzioni
- La regressione lineare risponde a una semplice domanda: รจ possibile misurare una relazione precisa tra una variabile target e un insieme di variabili predittive?
- Il metodo dei minimi quadrati ordinari individua i parametri che minimizzano la somma degli errori quadratici, ovvero la distanza verticale tra i valori y previsti e i valori y effettivi.
- Il modello probabilistico che include piรน di una variabile indipendente รจ chiamato modello di regressione multipla.
- Lo scopo dell'algoritmo di regressione lineare graduale รจ quello di aggiungere e rimuovere potenziali candidati nei modelli e mantenere quelli che hanno un impatto significativo sulla variabile dipendente.
- La selezione delle variabili รจ una parte importante dell'adattamento di un modello e la regressione stepwise esegue automaticamente questa ricerca.
Di seguito รจ riportato l'elenco di tutte le funzioni utilizzate in questo tutorial:
| Biblioteca | Obiettivo | Funzione | argomenti |
|---|---|---|---|
| base | Calcolare una regressione lineare | lom() | formula, dati |
| base | Riassumere il modello | riepilogo() | in forma |
| base | Extraccoefficienti t | lm()$coefficiente | |
| base | Extracresidui t | lm()$residui | |
| base | Extracvalore t adattato | lm()$valori.adattati | |
| olsrr | Eseguire una regressione graduale | ols_passo dopo passo() | fit, pent = 0.1, prem = 0.3, dettagli = FALSO |
Note:Ricorda di convertire le variabili categoriche in fattori prima di adattare il modello.





