Exemplu Simplu de Regresie Liniară în R

By Leonard Cucosro
Statistical TestsSPSS TutorialsR Programming

În acest exemplu practic de regresie liniară în R, vom învăța cum să prezicem eficiența consumului de combustibil a unei mașini bazat pe greutatea sa. Vom începe prin importarea unui set de date, calcularea regresiei liniare folosind funcția lm() și făcând predicții folosind funcția predict(), și vom învăța cum să interpretăm rezultatele regresiei liniare în R prin analiza coeficienților, valorii R-pătrat și a valorii p.

Deși vom folosi setul de date demo mtcars din R pentru a demonstra cum să calculăm regresia liniară, amintește-ți că poți folosi orice set de date R disponibil care conține o variabilă predictivă și o variabilă de răspuns.

Fără alte întârzieri, lansează R sau R Studio pe computerul tău și să începem.

Pasul 1: Importă un Set de Date în R

Pentru a începe, avem nevoie de un set de date cu care să lucrăm. Vom folosi setul de date mtcars, care conține greutatea și eficiența consumului de combustibil (în mile pe galon) ale diferitelor mașini. Acest set de date este încorporat în R și poate fi încărcat folosind funcția data(). Tastează următoarele în consola R:

data(mtcars)

Poți arunca o privire asupra datelor folosind funcția head(), care îți va arăta primele câteva rânduri ale setului de date:

head(mtcars)

Rezultatul ar trebui să arate cam așa:

                   mpg cyl disp  hp drat    wt  qsec vs am gear carb
Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2
Valiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3    1

După cum poți vedea, setul de date conține informații despre mpg, cyl, disp, hp, drat, wt, qsec, vs, am, gear și carb pentru diferite mărci de mașini.

Pasul 2: Calculează Regresia Liniară în R

Acum că avem datele încărcate, putem începe să efectuăm regresia liniară. Pentru a efectua regresia liniară, folosim funcția lm().

model <- lm(mpg ~ wt, data = mtcars)

Primul argument al funcției este o formulă care specifică modelul. În acest caz, modelul prezice mpg (eficiența combustibilului) folosind wt (greutatea). Argumentul data = mtcars specifică că setul de date de folosit este mtcars.

Pasul 3: Obține Sumarizarea Modelului de Regresie

Odată ce ai ajustat modelul, poți obține o sumarizare a modelului folosind funcția summary(). Sumarizarea include informații despre reziduuri, coeficienți, valoarea R-pătrat, statistica F și valoarea p.

Iată un exemplu de cum să obții sumarizarea modelului:

summary(model)

Această sumarizare a modelului de regresie liniară ar trebui să arate astfel:

Call:
lm(formula = mpg ~ wt, data = mtcars)

Residuals:
    Min      1Q  Median      3Q     Max
-4.5275 -2.3279 -0.4826  1.2975  6.8724

Coefficients:
            Estimate Std. Error t value Pr(>|t|)
(Intercept)  37.2851     1.8245  20.527  < 2e-16 ***
wt           -5.3445     0.5534  -9.659 1.29e-10 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 2.576 on 30 degrees of freedom
Multiple R-squared:  0.7528,	Adjusted R-squared:  0.7446
F-statistic: 91.38 on 1 and 30 DF,  p-value: 1.294e-10

Pasul 4: Interpretează Rezultatele Regresiei Liniare

Acum că am obținut rezultatul, iată cum ar trebui să interpretezi rezultatele regresiei liniare pentru exemplul nostru:

  • Rezultatul arată că coeficientul pentru wt (greutate) este -5.34447, iar intersecția este 37.28536.

  • Valoarea p este mai mică de 0.05, indicând că relația dintre greutate și eficiența combustibilului este semnificativă statistic.

  • Valoarea R-pătrat, care măsoară proporția varianței în variabila de răspuns explicată de variabila predictivă, este 0.7528. Aceasta înseamnă că greutatea mașinii poate explica 75.28% din variația în eficiența combustibilului.

Pasul 5: Desenează Linia de Regresie într-un Grafic

Doar folosind numere fără a le vizualiza într-un grafic nu este distractiv. Poți desena linia de regresie într-un grafic folosind pachetul ggplot2 în R. Iată un ghid despre cum să instalezi pachete în R, doar în cazul în care ai nevoie de el.

library(ggplot2)
 
# Creează un scatterplot
ggplot(mtcars, aes(x=wt, y=mpg)) +
  geom_point() +
  geom_smooth(method='lm', se=FALSE) +
  ggtitle("Regresie Liniară mpg vs wt")

Scatterplot-ul arată relația dintre greutate (wt) și eficiența combustibilului (mpg). Linia arată linia de regresie, care reprezintă cea mai bună dreaptă de ajustare prin date.

Linia este bazată pe coeficienții din modelul de regresie liniară pe care l-am ajustat anterior. Scatterplot-ul oferă o reprezentare vizuală a relației dintre variabilele predictivă și de răspuns, iar linia de regresie oferă o sumarizare a acelei relații.

Pasul 6: Folosirea Regresiei Liniare în R pentru a Face Predicții

Acum că avem modelul nostru de regresie liniară în R, este timpul să îl folosim pentru a face predicții folosind următoarea sintaxă:

predictions <- predict(model, newdata=data.frame(wt=c(3,4)))
predictions

Rezultatul acestui cod va fi valorile prezise ale mpg pentru două valori ale wt unde:

  • predict este funcția R folosită pentru a face predicții bazate pe un model de regresie liniară.

  • model este obiectul care stochează modelul de regresie liniară ajustat. În acest exemplu, model este obiectul creat din analiza de regresie liniară folosind funcția lm.

  • newdata este un argument care specifică valorile variabilei independente (în acest caz, wt) pentru care vrei să faci predicții. Valorile sunt trecute ca un data frame folosind funcția data.frame. Valorile pentru wt în acest exemplu sunt c(3,4), însemnând predicțiile vor fi făcute pentru mașini cântărind 3,000 și 4,000 de livre, respectiv.

Rezultatul acestui cod va fi valorile prezise ale variabilei dependente (în acest caz, mpg) bazate pe valorile variabilei independente specificate în newdata.

Și iată rezultatul pentru această predicție folosind funcția de mai sus:

       1        2
22.56687 20.80958

Aceste numere reprezintă valorile prezise ale mpg pentru două mașini cu greutăți de 3,000 de livre și 4,000 de livre, respectiv. Valorile prezise pot fi interpretate după cum urmează:

  • Pentru o mașină cântărind 3,000 de livre, modelul de regresie liniară prezice o valoare de 22.57 mpg.

  • Pentru o mașină cântărind 4,000 de livre, modelul de regresie liniară prezice o valoare de 20.81 mpg.

Este important să notezi că acestea sunt doar predicții și nu se vor potrivi neapărat cu valorile mpg reale pentru aceste mașini. Totuși, modelul de regresie liniară ne oferă o modalitate de a estima relația dintre wt și mpg și de a face predicții bazate pe această relație. Aceasta poate fi utilă pentru a lua decizii și a face predicții în aplicații din lumea reală.

Dacă este necesar, poți compara predicțiile cu valorile reale folosind funcția cbind() pentru a combina predicțiile și valorile reale într-un singur data frame folosind următoarea sintaxă:

results <- cbind(predictions, mtcars$mpg)

Întrebări Frecvente

Funcția lm() în R este folosită pentru a adapta modele de regresie liniară. Provine de la 'linear model' (model liniar) și calculează relația dintre o variabilă dependentă (răspuns) și una sau mai multe variabile independente (predictori). Sintaxa de bază este lm(y ~ x, data = dataset), unde y este variabila de răspuns și x este variabila predictivă. Funcția returnează un obiect model care conține coeficienți, reziduuri, valori ajustate și alte informații statistice necesare pentru analiză și predicție.
Valoarea R-pătrat (numită și coeficient de determinare) măsoară cât de bine se potrivește modelul tău de regresie liniară cu datele. Variază de la 0 la 1, unde 0 înseamnă că modelul nu explică nimic din variabilitate și 1 înseamnă că explică totul. De exemplu, un R-pătrat de 0,75 înseamnă că 75% din variația variabilei dependente este explicată de variabila(ele) independentă(e). În general, valori mai mari ale R-pătrat indică o potrivire mai bună, dar pragul acceptabil depinde de domeniul tău - științele sociale adesea acceptă 0,50+, în timp ce științele fizice pot necesita 0,90+.
Un coeficient negativ în regresia liniară indică o relație inversă între variabilele predictive și de răspuns. De exemplu, în exemplul nostru cu greutatea mașinii, coeficientul pentru greutate este -5,34, ceea ce înseamnă că pentru fiecare creștere de 1 unitate în greutate (1000 lbs), eficiența combustibilului (mpg) scade cu 5,34 mile pe galon. Coeficienții negativi arată că pe măsură ce o variabilă crește, cealaltă scade. Magnitudinea coeficientului îți spune puterea acestei relații.
Pentru a face predicții cu modelul tău de regresie liniară în R, folosește funcția predict(). Mai întâi, creează modelul tău cu lm(), apoi folosește predict(model, newdata) unde newdata este un cadru de date care conține valorile predictive. De exemplu: model <- lm(mpg ~ wt, data = mtcars), apoi predictions <- predict(model, newdata = data.frame(wt = c(2.5, 3.0, 3.5))). Aceasta va returna valori mpg prezise pentru mașini care cântăresc 2,5, 3,0 și 3,5 mii de lire. Poți adăuga și interval = 'confidence' sau interval = 'prediction' pentru a obține intervale de încredere sau de predicție.
Valoarea p în regresia liniară testează dacă relația dintre variabila ta predictivă și variabila de răspuns este semnificativă statistic. O valoare p mai mică de 0,05 (nivel de semnificație 5%) indică de obicei că relația este semnificativă statistic și nu se datorează întâmplării. În rezultatul summary, vei vedea valori p pentru fiecare coeficient. De exemplu, Pr(>|t|) = 1,29e-10 (care este 0,000000000129) este foarte semnificativ, ceea ce înseamnă că poți respinge cu încredere ipoteza nulă că nu există relație între variabile.
Coloana Estimate din rezultatul regresiei arată valorile coeficienților pentru modelul tău. Estimarea Intercept este valoarea prezisă a variabilei de răspuns când toți predictorii sunt zero. Pentru variabilele predictive, estimarea arată cât se schimbă variabila de răspuns pentru o creștere de o unitate în acel predictor, menținând alte variabile constante. De exemplu, dacă greutatea are o estimare de -5,34, înseamnă că mpg scade cu 5,34 pentru fiecare creștere de 1 unitate în greutate. Aceste estimări formează ecuația ta de regresie: y = Intercept + (Estimate × x).
Regresia liniară are patru presupuneri principale pe care ar trebui să le verifici: (1) Linearitate - relația dintre variabile este liniară; (2) Independență - observațiile sunt independente; (3) Homoscedasticitate - reziduurile au varianță constantă; (4) Normalitate - reziduurile sunt distribuite normal. În R, folosește grafice de diagnosticare cu plot(model) pentru a verifica acestea. Primul grafic (Residuals vs Fitted) verifică linearitatea și homoscedasticitatea, graficul Q-Q verifică normalitatea, iar poți folosi testul Durbin-Watson pentru independență. Încălcările acestor presupuneri pot necesita transformarea datelor sau abordări alternative de modelare.
Da, funcția lm() gestionează atât regresia liniară simplă, cât și multiplă. Pentru predictori multipli, pur și simplu adaugă-i la formula ta cu semne +: lm(y ~ x1 + x2 + x3, data = dataset). De exemplu, pentru a prezice mpg folosind atât greutatea cât și puterea în cai: model <- lm(mpg ~ wt + hp, data = mtcars). Rezultatul summary() va arăta coeficienți pentru fiecare predictor, permițându-ți să înțelegi cum fiecare variabilă afectează independent răspunsul. Poți include și termeni de interacțiune folosind * (de ex., wt * hp) pentru a testa dacă efectul unei variabile depinde de alta.

Concluzie

Efectuarea regresiei liniare în R este o modalitate puternică de a înțelege relația dintre variabile și de a face predicții. În acest articol, am arătat cum să efectuezi regresia liniară în R folosind funcția lm(), cum să faci predicții folosind funcția predict() și cum să interpretezi rezultatele.

Regresia liniară este un instrument fundamental în analiza statistică și învățarea automată, permițându-ți să înțelegi cum o variabilă influențează alta și să faci predicții informate bazate pe date istorice. Cu setul de date mtcars și funcțiile R demonstrate în acest tutorial, acum ai abilitățile de a aplica regresia liniară propriilor tale proiecte de analiză a datelor.