Lineaire interpolatie uitvoeren in r (met voorbeeld)


Lineaire interpolatie is het proces waarbij een onbekende waarde van een functie wordt geschat tussen twee bekende waarden.

Gegeven twee bekende waarden (x 1 , y 1 ) en (x 2 , y 2 ), kunnen we de y-waarde voor een punt x schatten met behulp van de volgende formule:

y = y 1 + (xx 1 )(y 2 -y 1 )/(x 2 -x 1 )

Het volgende voorbeeld laat zien hoe u lineaire interpolatie in R uitvoert.

Voorbeeld: lineaire interpolatie in R

Stel dat we het volgende dataframe hebben met x- en y-waarden in R:

 #define data frame
df <- data. frame (x=c(2, 4, 6, 8, 10, 12, 14, 16, 18, 20),
                 y=c(4, 7, 11, 16, 22, 29, 38, 49, 63, 80))

#view data frame
df

    xy
1 2 4
2 4 7
3 6 11
4 8 16
5 10 22
6 12 29
7 14 38
8 16 49
9 18 63
10 20 80

We kunnen de volgende code gebruiken om een spreidingsdiagram te maken om de (x,y)-waarden in het dataframe te visualiseren:

 #create scatterplot
plot(df$x, df$y, col=' blue ', pch= 19 )

Stel nu dat we de y-waarde willen vinden die geassocieerd is met een nieuwe x-waarde van 13 .

We kunnen hiervoor de functie approx() in R gebruiken:

 #fit linear regression model using data frame
model <- lm(y ~ x, data = df)

#interpolate y value based on x value of 13
y_new = approx(df$x, df$y, xout= 13 )

#view interpolated y value
y_new

$x
[1] 13

$y
[1] 33.5

De geschatte y-waarde blijkt 33,5 te zijn.

Als we het punt (13, 33.5) aan onze grafiek toevoegen, lijkt het vrij goed overeen te komen met de functie:

 #create scatterplot
plot(df$x, df$y, col=' blue ', pch= 19 )

#add the predicted point to the scatterplot
points(13, y_new$y, col=' red ', pch= 19 )

lineaire interpolatie in R

We kunnen deze exacte formule gebruiken om lineaire interpolatie uit te voeren voor elke nieuwe x-waarde.

Aanvullende bronnen

In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende taken in R kunt uitvoeren:

Hoe een stelsel vergelijkingen in R op te lossen
Hoe waarden in R te voorspellen met behulp van een meervoudig regressiemodel

Einen Kommentar hinzufügen

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