Un ghid pas cu pas pentru regresia liniară în R

regresia liniară este un model de regresie care utilizează o linie dreaptă pentru a descrie relația dintre variabile. Acesta găsește linia cea mai potrivită prin datele dvs. căutând valoarea coeficientului(coeficienților) de regresie care minimizează eroarea totală a modelului.,există două tipuri principale de regresie liniară:

  • regresia liniară simplă utilizează o singură variabilă independentă
  • regresia liniară multiplă utilizează două sau mai multe variabile independente

în acest ghid pas cu pas, vă vom parcurge regresia liniară în R folosind două seturi de date de probă.

regresia liniară Simplă
primul set de date conține observații cu privire la venituri (într-un interval de 15k $a $75k) și fericire (evaluat pe o scară de la 1 la 10), într-un imaginar eșantion de 500 de persoane., Valorile veniturilor sunt împărțite la 10.000 pentru a face ca datele de venit să corespundă scalei scorurilor de fericire (deci o valoare de 2 dolari reprezintă 20.000 USD, 3 dolari este 30.000 USD etc.).)
regresie liniară Multiplă
Cel de-al doilea set de date conține observații cu privire la procentul de oameni cu bicicleta la serviciu în fiecare zi, procentul de fumători, iar procentul de persoane cu boli de inima într-un imaginar eșantion de 500 de orașe.

descărcați seturile de date pentru a încerca singur.,

regresie Simplă set de date de regresie Multiplă set de date

Noțiuni de bază în R

Începe prin descărcarea R și RStudio. Apoi deschideți RStudio și faceți clic pe File > New File > R Script.pe măsură ce parcurgem fiecare pas, puteți copia și lipi codul din casetele de text direct în scriptul dvs. Pentru a rula codul, evidențiați liniile pe care doriți să le executați și faceți clic pe butonul Run din partea dreaptă sus a editorului de text (sau apăsați ctrl + enter pe tastatură).,p>

Pentru a instala pachetele de care aveți nevoie pentru a analiza, rula acest cod (trebuie doar să faceți acest lucru o dată):

install.packages("ggplot2")
install.packages("dplyr")
install.packages("broom")
install.packages("ggpubr")

Apoi, încărcați de pachete în R mediu de funcționare acest cod (care aveți nevoie pentru a face acest lucru de fiecare dată când reporniți R):

library(ggplot2)
library(dplyr)
library(broom)
library(ggpubr)

Pasul 1: Încărcați datele în R

Urmați acești patru pași pentru fiecare set de date:

  1. În RStudio, du-te la File > Import date > Din Text (de bază).,
  2. Alegeți fișierul de date pe care l-ați descărcat (income.date sau inimă.date) și apare o fereastră a setului de date de Import.
  3. în fereastra Data Frame, ar trebui să vedeți o coloană x (index) și coloane care prezintă datele pentru fiecare dintre variabile (venit și fericire sau ciclism, fumat și inimă.boala).
  4. Faceți clic pe butonul Import și fișierul ar trebui să apară în fila mediu din partea dreaptă sus a ecranului RStudio.

după ce ați încărcat datele, verificați dacă acestea au fost citite corect folosindsummary().,

regresie Simplă

summary(income.data)

Pentru că ambele variabile sunt cantitative, atunci când vom rula această funcție vom vedea o masă în consolă cu o numerică rezumat al datelor.,Acest lucru ne spune minimă, medie, medie, maximă și valorile variabilei independente (venituri) și variabila dependentă (fericirea):

regresie Multiplă

summary(heart.data)

din Nou, deoarece variabilele sunt cantitative, rularea de cod produce un numerice rezumat al datelor pentru variabilele independente (fumat și ciclism) și variabila dependentă (boli de inima):

Ce este plagiat scor?,

comparați hârtia cu peste 60 de miliarde de pagini web și 30 de milioane de publicații.

  • cel Mai bun plagiatul checker din 2020
  • Plagiat raport & procentaj
  • cel mai Mare plagiat baza de date

Scribbr Plagiatul Checker

Pasul 2: Asigurați-vă că datele satisface ipotezele

putem să utilizați R pentru a verifica datele noastre îndeplinesc cele patru ipoteze principale pentru regresia liniară.,

regresie simplă

  1. independența observațiilor (aka fără autocorelație)

deoarece avem doar o variabilă independentă și o variabilă dependentă, nu este nevoie să testăm relații ascunse între variabile.dacă știți că aveți autocorelație în variabile (adică observații multiple ale aceluiași subiect de test), atunci nu continuați cu o regresie liniară simplă! Utilizați un model structurat, ca un model liniar cu efecte mixte.,

  1. normalitate

pentru a verifica dacă variabila dependentă urmează o distribuție normală, utilizați funcția hist().

hist(income.data$happiness)

observațiile sunt aproximativ în formă de clopot (mai multe observații în mijlocul de distribuție, mai puține pe la cozi), astfel încât să putem continua cu regresie liniară.

  1. liniaritate

relația dintre variabila independentă și cea dependentă trebuie să fie liniară., Putem testa acest lucru vizual cu un complot scatter pentru a vedea dacă distribuția punctelor de date ar putea fi descrisă cu o linie dreaptă.

plot(happiness ~ income, data = income.data)

relația arata aproximativ liniară, astfel încât să putem continua cu model liniar.

  1. Homoscedasticitatea (aka omogenitatea varianței)

aceasta înseamnă că eroarea de predicție nu se modifică semnificativ în intervalul de predicție al modelului. Putem testa această ipoteză mai târziu, după montarea modelului liniar.,

regresie Multiplă

  1. Independenței de observații (aka nu autocorelare)

Utilizare cor() function pentru a testa relația dintre variabilele independente și asigurați-vă că acestea nu sunt prea puternic corelate.

cor(heart.data$biking, heart.data$smoking)

atunci Când am rula acest cod, de ieșire este de 0.015. Corelația dintre ciclism și fumat este mică (0,015 este doar o corelație de 1,5%), astfel încât putem include ambii parametri în modelul nostru.,

  1. normalitate

utilizați funcțiahist() pentru a testa dacă variabila dvs. dependentă urmează o distribuție normală.

hist(heart.data$heart.disease)

distribuția de observații este aproximativ în formă de clopot, astfel încât să putem continua cu regresie liniară.putem verifica acest lucru folosind două scatterplots: unul pentru ciclism și boli de inimă și unul pentru fumat și boli de inimă.,

plot(heart.disease ~ biking, data=heart.data)

plot(heart.disease ~ smoking, data=heart.data)

Deși relația dintre fumat și boala de inima este un pic mai puțin clar, încă apare liniar. Putem continua cu regresie liniară.

  1. Homoscedasticitate

vom verifica acest lucru după ce facem modelul.,

Pasul 3: efectuați analiza de regresie liniară

acum că ați stabilit că datele dvs. îndeplinesc ipotezele, puteți efectua o analiză de regresie liniară pentru a evalua relația dintre variabilele independente și dependente.

regresie simplă: venituri și fericire

Să vedem dacă există o relație liniară între venit și fericire în sondajul nostru pe 500 de persoane cu venituri cuprinse între 15k și 75k dolari, unde fericirea este măsurată pe o scară de la 1 la 10.,pentru a efectua o analiză simplă de regresie liniară și a verifica rezultatele, trebuie să rulați două linii de cod. Prima linie de cod face modelul liniar, iar cea de a doua linie afiseaza rezumatul model:

income.happiness.lm <- lm(happiness ~ income, data = income.data)summary(income.happiness.lm)

ieșire arată astfel:

Acest tabel de ieșire prima prezintă modelul ecuație, apoi rezumă modelul reziduurilor (vezi pasul 4).,

Coeficienții secțiune prezintă:

  1. estimarea (Estimarea) pentru parametrii modelului – valoarea y-intercept (în acest caz 0.204) și efectul estimat al venitului pe fericire (0.713).
  2. eroarea standard a valorilor estimate (Std. Eroare).
  3. statistica testului (valoarea t, în acest caz statistica t).
  4. valoarea p ( Pr(> | t/)), aka probabilitatea de a găsi statistica t dată dacă ipoteza nulă a unei relații nu ar fi adevărată.,ultimele trei linii sunt diagnosticarea modelului-cel mai important lucru de remarcat este valoarea p (aici este 2.2 e-16 sau aproape zero), ceea ce va indica dacă modelul se potrivește bine datelor.

    De la aceste rezultate, putem spune că există o relație pozitivă semnificativă între veniturile și fericire (p-value < 0,001), cu o 0.713-unitate (+/- 0.01) creșterea fericire pentru fiecare unitate de creștere a veniturilor.,

    regresie multiplă: ciclism, fumat și boli de inimă

    Să vedem dacă există o relație liniară între ciclism la muncă, fumat și boli de inimă în sondajul nostru imaginar din 500 de orașe. Ratele de ciclism la locul de muncă variază între 1 și 75%, ratele de fumat între 0,5 și 30%, și ratele de boli de inima între 0,5% și 20,5%.pentru a testa relația, ne potrivim mai întâi un model liniar cu boli de inimă ca variabilă dependentă și ciclism și fumat ca variabile independente., Rula aceste două linii de cod:

    heart.disease.lm<-lm(heart.disease ~ biking + smoking, data = heart.data)summary(heart.disease.lm)

    ieșire arată astfel:

    efectul estimat de ciclism pe boli de inima este -0.2, în timp ce efectul estimat de fumat este 0.178.aceasta înseamnă că pentru fiecare creștere de 1% a ciclismului la locul de muncă, există o scădere corelată de 0,2% a incidenței bolilor de inimă. Între timp, pentru fiecare creștere de 1% a fumatului, există o creștere de 0,178% a ratei bolilor de inimă.,erorile standard pentru acești coeficienți de regresie sunt foarte mici, iar statisticile t sunt foarte mari (-147 și, respectiv, 50,4). Valorile p reflectă aceste erori mici și statistici t mari. Pentru ambii parametri, există o probabilitate aproape zero ca acest efect să se datoreze întâmplării.amintiți-vă că aceste date sunt alcătuite pentru acest exemplu, astfel încât în viața reală aceste relații nu ar fi aproape atât de clare!,

    Pasul 4: Verificați homoscedasticitatea

    înainte de a continua vizualizarea datelor, trebuie să ne asigurăm că modelele noastre se potrivesc cu ipoteza homoscedasticității modelului liniar.

    regresie Simplă

    putem rula plot(income.happiness.lm) pentru a verifica dacă datele observate se întâlnește modelul nostru ipoteze:

    par(mfrow=c(2,2))
    plot(income.happiness.lm)
    par(mfrow=c(1,1))

    Rețineți că par(mfrow()) comanda va împărți în Parcele fereastră în numărul de rânduri și coloane specificate în paranteze., Deci par(mfrow=c(2,2)) îl împarte în două rânduri și două coloane. Pentru a reveni la trasarea unui grafic în întreaga fereastră, setați din nou parametrii și înlocuiți (2,2) cu (1,1).

    acestea sunt parcelele reziduale produse de codul:

    reziduurile sunt varianța inexplicabilă. Ele nu sunt exact la fel ca eroarea de model, dar sunt calculate din aceasta, așa că a vedea o părtinire în reziduuri ar indica, de asemenea, o părtinire a erorii.,cel mai important lucru pe care trebuie să-l căutați este că liniile roșii care reprezintă media reziduurilor sunt practic orizontale și centrate în jurul valorii de zero. Acest lucru înseamnă că nu există valori aberante sau prejudecăți în datele care ar face o regresie liniară invalidă.

    În Q-Qplot Normal din dreapta sus, putem vedea că reziduurile reale din modelul nostru formează o linie aproape perfect unu-la-unu cu reziduurile teoretice dintr-un model perfect.pe baza acestor reziduuri, putem spune că modelul nostru îndeplinește ipoteza homoscedasticității.,

    regresie Multiplă

    din Nou, ar trebui să verificați că modelul nostru este de fapt o alegere bună pentru date, și că nu avem mare variație în modelul de eroare, prin rularea acestui cod:

    par(mfrow=c(2,2))
    plot(heart.disease.lm)
    par(mfrow=c(1,1))

    ieșire arată astfel:

    Ca și cu nostru simplu de regresie, reziduurile arată fără părtinire, deci putem spune că modelul nostru se potrivește ipoteza homoscedasticității.,

    Pasul 5: vizualizați rezultatele cu un grafic

    apoi, putem trasa datele și linia de regresie din modelul nostru de regresie liniară, astfel încât rezultatele să poată fi partajate.

    regresie simplă

    Urmați 4 pași pentru a vizualiza rezultatele regresiei liniare simple.,

    1. Complot puncte de date pe un grafic
    income.graph<-ggplot(income.data, aes(x=income, y=happiness))+ geom_point()income.graph

    1. Adauga liniar de regresie la datele complotat

    Adauga linia de regresie folosind geom_smooth() și tastând lm ca metodă pentru crearea de linie. Aceasta va adăuga linia regresiei liniare, precum și eroarea standard a estimării (în acest caz +/- 0.,01), ca un gri deschis benzi din jur linia:

    income.graph <- income.graph + geom_smooth(method="lm", col="black")income.graph

    1. se Adaugă ecuația de regresie.
    income.graph <- income.graph + stat_regline_equation(label.x = 3, label.y = 7)income.graph

    1. Face graficul gata pentru publicare

    putem adăuga unele stil parametri folosind theme_bw() și de a face etichete personalizate folosind labs().,

    income.graph + theme_bw() + labs(title = "Reported happiness as a function of income", x = "Income (x$10,000)", y = "Happiness score (0 to 10)")

    Aceasta produce finit graficul pe care le puteți include în actele tale:

    regresie Multiplă

    vizualizare pas pentru regresia multiplă este mai dificilă decât pentru regresie simplă, pentru că acum avem doi predictori. O opțiune este de a complota un avion, dar acestea sunt dificil de citit și nu sunt adesea publicate.vom încerca o altă metodă: trasarea relației dintre ciclism și boli de inimă la diferite niveluri de fumat., În acest exemplu, fumatul va fi tratat ca un factor cu trei niveluri, doar în scopul afișării relațiilor din datele noastre.

    există 7 pași de urmat.

    1. de a Crea un nou dataframe cu informațiile necesare pentru a trasa modelul

    foloseste functia expand.grid() pentru a crea o dataframe cu parametrii de aprovizionare., În cadrul acestei funcții vom:

    • creați o secvență de la cea mai mică la cea mai mare valoare a datelor dvs. de ciclism observate;
    • alegeți valorile minime, medii și maxime ale fumatului, pentru a face 3 niveluri de fumat peste care să preziceți ratele bolilor de inimă.acest lucru nu va crea nimic nou în consola dvs., dar ar trebui să vedeți un nou cadru de date care apare în fila Mediu. Faceți clic pe ea pentru ao vizualiza.,
      1. preziceți valorile bolilor de inimă pe baza modelului dvs. liniar

      în continuare vom salva valorile „y prezise” ca o nouă coloană în setul de date pe care tocmai l-am creat.

      plotting.data$predicted.y <- predict.lm(heart.disease.lm, newdata=plotting.data)
      1. în jurul nefumători numere cu două zecimale

      Acest lucru va face ca legenda să fie mai ușor de citit mai târziu.,

      plotting.data$smoking <- round(plotting.data$smoking, digits = 2)
      1. Schimba „fumat” variabilă într-un factor

      Acest lucru ne permite să complot interacțiunea între ciclism și boli de inima la fiecare dintre cele trei niveluri de fumat, am ales-o.,

      plotting.data$smoking <- as.factor(plotting.data$smoking)
      1. Plot the original data
      heart.plot <- ggplot(heart.data, aes(x=biking, y=heart.disease)) + geom_point()heart.plot

      1. Add the regression lines
      heart.plot <- heart.plot + geom_line(data=plotting.data, aes(x=biking, y=predicted.y, color=smoking), size=1.25)heart.plot

      1. Make the graph ready for publication

      Because this graph has two regression coefficients, the stat_regline_equation() function won’t work here., Dar dacă doriți să adăugați nostru model de regresie pentru a graficului, putem face ca acest lucru:

      heart.plot + annotate(geom="text", x=30, y=1.75, label=" = 15 + (-0.2*biking) + (0.178*smoking)")

      Acesta este terminat graficul pe care le puteți include în actele tale!

      Pasul 6: raportați rezultatele

      În plus față de grafic, includeți o scurtă declarație care explică rezultatele modelului de regresie.

      Raportarea rezultatelor regresiei liniare simple
      Am găsit o relație semnificativă între veniturile și fericire (p < 0.001, R2 = 0.73 ± 0.,0193), cu o creștere de 0,73 unități a fericirii raportate pentru fiecare creștere a veniturilor de 10,000 USD.
      Raportarea rezultatelor regresiei liniare multiple
      În sondajul nostru de 500 de orașe, am găsit o relație semnificativă între frecvența cu bicicleta la serviciu și frecvența bolilor de inima și de frecvența de fumat și frecvența de boli de inima (p < 0 și p<0.001, respectiv).

      în mod specific am constatat o scădere de 0,2% (±0.,0014) în frecvența bolilor de inimă pentru fiecare creștere de 1% a ciclismului și o creștere de 0,178% (±0,0035) a frecvenței bolilor de inimă pentru fiecare creștere de 1% a fumatului.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *