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.

  • ๐Ÿ“ Equazione centrale: La regressione semplice adatta la retta y = alpha + beta x, mentre la regressione multipla estende la stessa retta a k predittori in forma matriciale.
  • ๐Ÿงฎ Metodo di stima: Il metodo dei minimi quadrati ordinari minimizza la somma dei quadrati delle distanze verticali tra i valori osservati e quelli previsti.
  • ๏ธ Sintassi del modello: lm(formula, dati) sostituisce il segno di uguale con una tilde e -1 rimuove l'intercetta.
  • ๐Ÿ“Š Uscita di lettura: La funzione summary() riporta i coefficienti, i valori p e l'R-quadrato corretto, che raggiunge 0.8199 nell'esempio mtcars.
  • ๐Ÿ”Ž Diagnostica: par(mfrow = c(2, 2)) seguito da plot(fit) genera i quattro grafici dei residui utilizzati per testare le ipotesi OLS.
  • ๐Ÿ” Selezione variabile: La regressione stepwise in olsrr aggiunge e rimuove i predittori in base al valore p e si stabilizza su wt piรน hp.

Regressione lineare multipla in R

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:

Regressione lineare semplice in R

where

  • y = variabile dipendente
  • x = Variabile indipendente
  • Regressione lineare semplice in R = componente di errore casuale
  • Regressione lineare semplice in R = intercettare
  • Regressione lineare semplice in R = Coefficiente di x

Consideriamo il seguente grafico:

Regressione lineare semplice in R

L'equazione รจ Regressione lineare semplice in R 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 Regressione lineare semplice in R and Regressione lineare semplice in R, 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:

Grafico a dispersione

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 Stime dei minimi quadrati and Stime dei minimi quadrati รˆ semplice. Questo tutorial non ricava le formule, si limita a enunciarle.

Vuoi stimare: Stime dei minimi quadrati

L'obiettivo della regressione OLS รจ minimizzare la seguente equazione:

Stime dei minimi quadrati

where

Stime dei minimi quadrati รจ il valore effettivo e Stime dei minimi quadrati รจ il valore previsto.

La soluzione per Stime dei minimi quadrati is Stime dei minimi quadrati

Si noti che Stime dei minimi quadrati indica il valore medio di x

La soluzione per Stime dei minimi quadrati is Stime dei minimi quadrati

In R, รจ possibile utilizzare le funzioni cov() e var() per stimare Stime dei minimi quadrati e puoi usare la funzione mean() per stimare Stime dei minimi quadrati

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 รจ:

Regressione lineare multipla in R

Nella notazione matriciale, puoi riscrivere il modello:

  • Regressione lineare multipla in R

La variabile dipendente y รจ ora una funzione di k variabili indipendenti. Il valore del coefficiente Regressione lineare multipla in R determina il contributo della variabile indipendente Regressione lineare multipla in R and Regressione lineare multipla in R.

Introduciamo brevemente l'ipotesi che abbiamo fatto sull'errore casuale Regressione lineare multipla in R dell'OLS:

  • Media pari a 0
  • Varianza pari a Regressione lineare multipla in R
  • Distribuzione normale
  • Gli errori casuali sono indipendenti (in senso probabilistico)

Devi risolvere per Regressione lineare multipla in R, 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 รจ:

Regressione lineare multipla in R

con:

  • indica il trasporre della matrice X
  • Regressione lineare multipla in R 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

Variabili continue in R

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 รจ

Variabili continue in R

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 รจ:

Variabili continue in R

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:

Variabili continue in R

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.

  1. 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.
  2. Chiamare predict(). Passa l'oggetto adattato e il nuovo data frame.
  3. 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:

Regressione lineare graduale in R

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 Esempio di regressione graduale passo dopo passo 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:

Esempio di regressione graduale passo dopo passo

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:

Regressione lineare graduale in R
Regressione lineare graduale in R
  • 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.

DOMANDE FREQUENTI

Il coefficiente di determinazione Rยฒ aumenta sempre quando si aggiunge un predittore, anche se inutile. Il coefficiente di determinazione Rยฒ corretto penalizza ogni termine aggiuntivo, quindi puรฒ diminuire. Utilizzare il coefficiente di determinazione Rยฒ corretto quando si confrontano modelli con un numero diverso di predittori.

Il grafico Residui vs Leva evidenzia i punti influenti tramite la distanza di Cook. Analizzateli attentamente prima di eliminare qualsiasi dato: un valore anomalo potrebbe essere un errore di inserimento dati, oppure potrebbe rappresentare l'osservazione piรน informativa del campione.

No. R crea automaticamente le variabili fittizie non appena una colonna diventa un fattore. Il primo livello diventa il gruppo di riferimento e ogni altro coefficiente viene letto come una differenza rispetto a tale gruppo di riferimento.

La regressione lineare รจ veloce, completamente verificabile e difficile da sovradattare, il che la rende il punto di riferimento standard prima che qualsiasi team di IA si impegni nel gradient boosting o nelle reti neurali. I settori regolamentati spesso richiedono tale trasparenza.

Sรฌ. Gli assistenti basati sull'IA possono proporre specifiche candidate, spiegare passo passo l'output e segnalare la multicollinearitร . Considera i suggerimenti come ipotesi e conferma ciascuno di essi con le tue analisi e conoscenze specifiche del settore.

Riassumi questo post con: