Как выполнить линейную интерполяцию в r (с примером)


Линейная интерполяция — это процесс оценки неизвестного значения функции между двумя известными значениями.

Учитывая два известных значения (x 1 , y 1 ) и (x 2 , y 2 ), мы можем оценить значение y для точки x, используя следующую формулу:

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

В следующем примере показано, как выполнить линейную интерполяцию в R.

Пример: линейная интерполяция в R

Предположим, у нас есть следующий кадр данных со значениями x и y в 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

Мы можем использовать следующий код для создания диаграммы рассеяния для визуализации значений (x,y) во фрейме данных:

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

Теперь предположим, что мы хотим найти значение y, связанное с новым значением x, равным 13 .

Для этого мы можем использовать функцию Approx() в R:

 #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

Предполагаемое значение y оказывается равным 33,5 .

Если мы добавим точку (13, 33,5) на наш график, она, похоже, вполне соответствует функции:

 #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 )

линейная интерполяция в R

Мы можем использовать эту точную формулу для выполнения линейной интерполяции для любого нового значения x.

Дополнительные ресурсы

В следующих руководствах объясняется, как выполнять другие распространенные задачи в R:

Как решить систему уравнений в R
Как прогнозировать значения в R с помощью модели множественной регрессии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *