Logaritmische regressie in r (stap voor stap)


Logaritmische regressie is een soort regressie die wordt gebruikt om situaties te modelleren waarin de groei of achteruitgang eerst snel versnelt en vervolgens in de loop van de tijd vertraagt.

De volgende grafiek toont bijvoorbeeld een voorbeeld van logaritmisch verval:

Voor dit soort situaties zou de relatie tussen een voorspellende variabele en een responsvariabele goed kunnen worden gemodelleerd met behulp van logaritmische regressie.

De vergelijking voor een logaritmisch regressiemodel heeft de volgende vorm:

y = a + b*ln(x)

Goud:

  • y: de responsvariabele
  • x: de voorspellende variabele
  • a, b: de regressiecoëfficiënten die de relatie tussen x en y beschrijven

Het volgende stapsgewijze voorbeeld laat zien hoe u logaritmische regressie in R uitvoert.

Stap 1: Creëer de gegevens

Laten we eerst valse gegevens maken voor twee variabelen: x en y :

 x=1:15

y=c(59, 50, 44, 38, 33, 28, 23, 20, 17, 15, 13, 12, 11, 10, 9.5)

Stap 2: Visualiseer de gegevens

Laten we vervolgens een snelle spreidingsdiagram maken om de relatie tussen x en y te visualiseren:

 plot(x, y) 

Uit de grafiek kunnen we zien dat er een duidelijk logaritmisch vervalpatroon bestaat tussen de twee variabelen. De waarde van de responsvariabele y neemt eerst snel af en vertraagt vervolgens in de loop van de tijd.

Het lijkt daarom verstandig om een logaritmische regressievergelijking toe te passen om de relatie tussen de variabelen te beschrijven.

Stap 3: Pas het logaritmische regressiemodel aan

Vervolgens zullen we de functie lm() gebruiken om een logaritmisch regressiemodel te fitten, waarbij we de natuurlijke logaritme van x als voorspellende variabele en y als responsvariabele gebruiken.

 #fit the model
model <- lm(y ~ log (x))

#view the output of the model
summary(model)

Call:
lm(formula = y ~ log(x))

Residuals:
   Min 1Q Median 3Q Max 
-4.069 -1.313 -0.260 1.127 3.122 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) 63.0686 1.4090 44.76 1.25e-15 ***
log(x) -20.1987 0.7019 -28.78 3.70e-13 ***
---
Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 2.054 on 13 degrees of freedom
Multiple R-squared: 0.9845, Adjusted R-squared: 0.9834 
F-statistic: 828.2 on 1 and 13 DF, p-value: 3.702e-13

De totale F-waarde van het model is 828,2 en de overeenkomstige p-waarde is extreem laag (3,702e-13), wat aangeeft dat het model als geheel bruikbaar is.

Met behulp van de coëfficiënten uit de uitvoertabel kunnen we zien dat de aangepaste logaritmische regressievergelijking is:

y = 63,0686 – 20,1987 * ln(x)

We kunnen deze vergelijking gebruiken om de responsvariabele, y , te voorspellen op basis van de waarde van de voorspellende variabele, x . Als x = 12, dan voorspellen we bijvoorbeeld dat y 12,87 zou zijn:

y = 63,0686 – 20,1987 * ln(12) = 12,87

Bonus: voel je vrij om deze online logaritmische regressiecalculator te gebruiken om automatisch de logaritmische regressievergelijking voor een bepaalde voorspeller en responsvariabele te berekenen.

Stap 4: Visualiseer het logaritmische regressiemodel

Ten slotte kunnen we een snelle grafiek maken om te visualiseren hoe goed het logaritmische regressiemodel bij de gegevens past:

 #plot x vs. y
plot(x, y)

#define x-values to use for regression line
x=seq(from= 1 , to= 15 , length. out = 1000 )

#use the model to predict the y-values based on the x-values
y=predict(model,newdata=list(x=seq(from= 1 ,to= 15 ,length. out = 1000 )),
          interval=" confidence ")

#add the fitted regression line to the plot (lwd specifies the width of the line)
matlines(x,y, lwd= 2 )

Logaritmische regressie in R

We kunnen zien dat het logaritmische regressiemodel goed aansluit bij deze specifieke dataset.

Aanvullende bronnen

Hoe eenvoudige lineaire regressie uit te voeren in R
Hoe meervoudige lineaire regressie uit te voeren in R
Hoe kwadratische regressie uit te voeren in R
Hoe exponentiële regressie uit te voeren in R
Hoe polynomiale regressie uit te voeren in R

Einen Kommentar hinzufügen

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