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: