R - Regressione lineare

L'analisi di regressione è uno strumento statistico molto diffuso per stabilire un modello di relazione tra due variabili. Una di queste variabili è chiamata variabile predittore il cui valore viene raccolto tramite esperimenti. L'altra variabile è chiamata variabile di risposta il cui valore è derivato dalla variabile predittore.

Nella regressione lineare queste due variabili sono correlate tramite un'equazione, dove l'esponente (potenza) di entrambe queste variabili è 1. Matematicamente una relazione lineare rappresenta una linea retta quando tracciata come grafico. Una relazione non lineare in cui l'esponente di qualsiasi variabile non è uguale a 1 crea una curva.

L'equazione matematica generale per una regressione lineare è:

y = ax + b

Di seguito la descrizione dei parametri utilizzati:

  • y è la variabile di risposta.

  • x è la variabile predittore.

  • a e b sono costanti chiamate coefficienti.

Passaggi per stabilire una regressione

Un semplice esempio di regressione è prevedere il peso di una persona quando la sua altezza è nota. Per fare questo dobbiamo avere il rapporto tra altezza e peso di una persona.

I passaggi per creare la relazione sono:

  • Eseguire l'esperimento di raccolta di un campione dei valori osservati di altezza e peso corrispondente.

  • Crea un modello di relazione utilizzando il lm() funzioni in R.

  • Trova i coefficienti dal modello creato e crea l'equazione matematica usando questi

  • Ottieni un riepilogo del modello di relazione per conoscere l'errore medio nella previsione. Chiamato ancheresiduals.

  • Per prevedere il peso di nuove persone, utilizzare il predict() funzione in R.

Dati in ingresso

Di seguito sono riportati i dati campione che rappresentano le osservazioni:

# Values of height
151, 174, 138, 186, 128, 136, 179, 163, 152, 131

# Values of weight.
63, 81, 56, 91, 47, 57, 76, 72, 62, 48

Funzione lm ()

Questa funzione crea il modello di relazione tra il predittore e la variabile di risposta.

Sintassi

La sintassi di base per lm() funzione nella regressione lineare è -

lm(formula,data)

Di seguito la descrizione dei parametri utilizzati:

  • formula è un simbolo che presenta la relazione tra x e y.

  • data è il vettore su cui verrà applicata la formula.

Crea un modello di relazione e ottieni i coefficienti

x <- c(151, 174, 138, 186, 128, 136, 179, 163, 152, 131)
y <- c(63, 81, 56, 91, 47, 57, 76, 72, 62, 48)

# Apply the lm() function.
relation <- lm(y~x)

print(relation)

Quando eseguiamo il codice sopra, produce il seguente risultato:

Call:
lm(formula = y ~ x)

Coefficients:
(Intercept)            x  
   -38.4551          0.6746

Ottieni il riepilogo della relazione

x <- c(151, 174, 138, 186, 128, 136, 179, 163, 152, 131)
y <- c(63, 81, 56, 91, 47, 57, 76, 72, 62, 48)

# Apply the lm() function.
relation <- lm(y~x)

print(summary(relation))

Quando eseguiamo il codice sopra, produce il seguente risultato:

Call:
lm(formula = y ~ x)

Residuals:
    Min      1Q     Median      3Q     Max 
-6.3002    -1.6629  0.0412    1.8944  3.9775 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept) -38.45509    8.04901  -4.778  0.00139 ** 
x             0.67461    0.05191  12.997 1.16e-06 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 3.253 on 8 degrees of freedom
Multiple R-squared:  0.9548,    Adjusted R-squared:  0.9491 
F-statistic: 168.9 on 1 and 8 DF,  p-value: 1.164e-06

Funzione predicire ()

Sintassi

La sintassi di base per predire () nella regressione lineare è:

predict(object, newdata)

Di seguito la descrizione dei parametri utilizzati:

  • object è la formula che è già stata creata utilizzando la funzione lm ().

  • newdata è il vettore contenente il nuovo valore per la variabile predittore.

Prevedi il peso delle nuove persone

# The predictor vector.
x <- c(151, 174, 138, 186, 128, 136, 179, 163, 152, 131)

# The resposne vector.
y <- c(63, 81, 56, 91, 47, 57, 76, 72, 62, 48)

# Apply the lm() function.
relation <- lm(y~x)

# Find weight of a person with height 170.
a <- data.frame(x = 170)
result <-  predict(relation,a)
print(result)

Quando eseguiamo il codice sopra, produce il seguente risultato:

1 
76.22869

Visualizza graficamente la regressione

# Create the predictor and response variable.
x <- c(151, 174, 138, 186, 128, 136, 179, 163, 152, 131)
y <- c(63, 81, 56, 91, 47, 57, 76, 72, 62, 48)
relation <- lm(y~x)

# Give the chart file a name.
png(file = "linearregression.png")

# Plot the chart.
plot(y,x,col = "blue",main = "Height & Weight Regression",
abline(lm(x~y)),cex = 1.3,pch = 16,xlab = "Weight in Kg",ylab = "Height in cm")

# Save the file.
dev.off()

Quando eseguiamo il codice sopra, produce il seguente risultato: