Hoe u eenvoudige lineaire regressie in r uitvoert (stap voor stap)


Eenvoudige lineaire regressie is een techniek die we kunnen gebruiken om de relatie tussen een enkele verklarende variabele en een enkele responsvariabele te begrijpen.

In een notendop vindt deze techniek een lijn die het beste bij de gegevens past en neemt deze de volgende vorm aan:

ŷ = b0 + b1 x

Goud:

  • ŷ : De geschatte responswaarde
  • b 0 : De oorsprong van de regressielijn
  • b 1 : De helling van de regressielijn

Deze vergelijking kan ons helpen de relatie tussen de verklarende variabele en de responsvariabele te begrijpen en kan (ervan uitgaande dat deze statistisch significant is) worden gebruikt om de waarde van een responsvariabele te voorspellen gegeven de waarde van de verklarende variabele.

Deze tutorial biedt stapsgewijze uitleg over het uitvoeren van eenvoudige lineaire regressie in R.

Stap 1: Gegevens laden

Voor dit voorbeeld maken we een nep-dataset met de volgende twee variabelen voor 15 studenten:

  • Totaal aantal uren gestudeerd voor bepaalde examens
  • Examenresultaat

We zullen proberen een eenvoudig lineair regressiemodel in te passen met uren als verklarende variabele en onderzoeksresultaten als responsvariabele.

De volgende code laat zien hoe u deze nep-dataset in R kunt maken:

 #create dataset
df <- data.frame(hours=c(1, 2, 4, 5, 5, 6, 6, 7, 8, 10, 11, 11, 12, 12, 14),
                 score=c(64, 66, 76, 73, 74, 81, 83, 82, 80, 88, 84, 82, 91, 93, 89))

#view first six rows of dataset
head(df)

  hours score
1 1 64
2 2 66
3 4 76
4 5 73
5 5 74
6 6 81

#attach dataset to make it more convenient to work with
attach(df)

Stap 2: Visualiseer de gegevens

Voordat we een eenvoudig lineair regressiemodel kunnen toepassen, moeten we eerst de gegevens visualiseren om deze te begrijpen.

Ten eerste willen we er zeker van zijn dat de relatie tussen uren en score ongeveer lineair is, aangezien dit een enorme onderliggende aanname is van eenvoudige lineaire regressie. We kunnen een eenvoudig spreidingsdiagram maken om de relatie tussen de twee variabelen te visualiseren:

 scatter.smooth(hours, score, main=' Hours studied vs. Exam Score ')

Spreidingsplot voor eenvoudige lineaire regressie in R

Uit de grafiek kunnen we zien dat de relatie lineair lijkt te zijn. Naarmate het aantal uren toeneemt, stijgt de score ook lineair.

Vervolgens kunnen we een boxplot maken om de verdeling van de examenresultaten te visualiseren en te controleren op uitschieters . Standaard definieert R een waarneming als een uitbijter als deze 1,5 keer de interkwartielafstand boven het derde kwartiel (Q3) of 1,5 keer de interkwartielafstand onder het eerste kwartiel (Q1) ligt.

Als een waarneming een uitbijter is, verschijnt er een kleine cirkel in de boxplot:

 boxplot(score) 

Boxplot voor eenvoudige lineaire regressie in R

Er zijn geen kleine cirkels in de boxplot, wat betekent dat er geen uitschieters in onze dataset voorkomen.

Stap 3: Voer een eenvoudige lineaire regressie uit

Zodra we hebben bevestigd dat de relatie tussen onze variabelen lineair is en er geen uitschieters zijn, kunnen we overgaan tot het fitten van een eenvoudig lineair regressiemodel met uren als verklarende variabele en de score als responsvariabele:

 #fit simple linear regression model
model <- lm(score~hours)

#view model summary
summary(model)

Call:
lm(formula = score ~ hours)

Residuals:
   Min 1Q Median 3Q Max 
-5,140 -3,219 -1,193 2,816 5,772 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) 65,334 2,106 31,023 1.41e-13 ***
hours 1.982 0.248 7.995 2.25e-06 ***
---
Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 3.641 on 13 degrees of freedom
Multiple R-squared: 0.831, Adjusted R-squared: 0.818 
F-statistic: 63.91 on 1 and 13 DF, p-value: 2.253e-06

Uit de samenvatting van het model kunnen we zien dat de aangepaste regressievergelijking is:

Score = 65.334 + 1.982*(uur)

Dit betekent dat elk extra bestudeerd uur gepaard gaat met een gemiddelde stijging van de examenscore van 1.982 punten. En de oorspronkelijke waarde van 65.334 vertelt ons de gemiddelde verwachte examenscore voor een student die nul uur studeert.

We kunnen deze vergelijking ook gebruiken om de verwachte examenscore te vinden op basis van het aantal uren dat een student studeert. Een student die bijvoorbeeld 10 uur studeert, moet een examenscore van 85,15 behalen:

Score = 65,334 + 1,982*(10) = 85,15

Zo interpreteert u de rest van de modelsamenvatting:

  • Pr(>|t|): Dit is de p-waarde die is gekoppeld aan de modelcoëfficiënten. Omdat de p-waarde voor uren (2.25e-06) aanzienlijk kleiner is dan 0,05, kunnen we zeggen dat er een statistisch significant verband bestaat tussen uren en score .
  • Meerdere R-kwadraat: Dit getal vertelt ons dat het percentage variatie in examenscores kan worden verklaard door het aantal bestudeerde uren. Over het algemeen geldt dat hoe groter de R-kwadraatwaarde van een regressiemodel is, hoe beter de verklarende variabelen de waarde van de responsvariabele kunnen voorspellen. In dit geval kan 83,1% van de variatie in scores worden verklaard door bestudeerde uren.
  • Residuele standaardfout: dit is de gemiddelde afstand tussen de waargenomen waarden en de regressielijn. Hoe lager deze waarde, hoe beter een regressielijn kan corresponderen met de waargenomen gegevens. In dit geval wijkt de gemiddelde score op het examen 3.641 punten af van de score voorspeld door de regressielijn.
  • F-statistiek en p-waarde: De F-statistiek ( 63.91 ) en de bijbehorende p-waarde ( 2.253e-06 ) vertellen ons de algehele betekenis van het regressiemodel, dat wil zeggen of de verklarende variabelen in het model nuttig zijn om de variatie te verklaren . in de responsvariabele. Omdat de p-waarde in dit voorbeeld kleiner is dan 0,05, is ons model statistisch significant en worden uren als nuttig beschouwd bij het verklaren van de scorevariatie .

Stap 4: Maak resterende plots

Nadat het eenvoudige lineaire regressiemodel aan de gegevens is aangepast, is de laatste stap het maken van residuele plots.

Een van de belangrijkste aannames van lineaire regressie is dat de residuen van een regressiemodel bij benadering normaal verdeeld zijn en homoscedastisch zijn op elk niveau van de verklarende variabele. Als niet aan deze aannames wordt voldaan, kunnen de resultaten van ons regressiemodel misleidend of onbetrouwbaar zijn.

Om te verifiëren dat aan deze aannames wordt voldaan, kunnen we de volgende restplots maken:

Plot van residuen versus aangepaste waarden: deze plot is nuttig voor het bevestigen van homoscedasticiteit. Op de x-as worden de gefitte waarden weergegeven en op de y-as de residuen. Zolang de residuen willekeurig en uniform verspreid lijken te zijn over de grafiek rond de nulwaarde, kunnen we aannemen dat de homoscedasticiteit niet wordt geschonden:

 #define residuals
res <- resid(model)

#produce residual vs. fitted plot
plot(fitted(model), res)

#add a horizontal line at 0 
abline(0,0)

Residuele plot in R voor eenvoudige lineaire regressie

De residuen lijken willekeurig rond nul verspreid te zijn en vertonen geen merkbaar patroon, dus aan deze veronderstelling wordt voldaan.

QQ-plot: Deze plot is nuttig om te bepalen of de residuen een normale verdeling volgen. Als de gegevenswaarden in de grafiek een ruwweg rechte lijn volgen in een hoek van 45 graden, zijn de gegevens normaal verdeeld:

 #create QQ plot for residuals
qqnorm(res)

#add a straight diagonal line to the plot
qqline(res) 

Normale QQ-plot in R

De residuen wijken een beetje af van de 45 graden-lijn, maar niet genoeg om ernstige zorgen te veroorzaken. We kunnen ervan uitgaan dat aan de normaliteitsaanname is voldaan.

Omdat de residuen normaal verdeeld en homoscedastisch zijn, hebben we geverifieerd dat aan de aannames van het eenvoudige lineaire regressiemodel is voldaan. De output van ons model is dus betrouwbaar.

De volledige R-code die in deze tutorial wordt gebruikt, vindt u hier .

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert