Суббота, 04.04.2026, 21:47Приветствуем вас Гость | RSS
Решение задач в среде R
Главная | predict | Регистрация | Вход
» Меню сайта

» R практикум

» R кодинг

» Rmatem

» Опрос
Сколько вам лет?
Всего ответов: 9

» Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Функция предсказания

Пусть у нас задана функция y(x) = x^2 – 2*x + 3. И у нас имеется ряд значений которая принимает данная функция при разных значениях x: (в интервале от -4 до 3 с шагом 0.25). Так же добавим в аргумент небольшую ошибку (для чего воспользуемся функцией нормального распределения). Начало положено:

set.seed(45)

x = seq(-4, 3, 0.25)

x = x

y = x^2 - 2*x + 3 + rnorm(length(x), 0, 1)

plot(x, y)

Прежде чем мы начнем работать с функцией предсказания predict нам необходимо создать модель зависимости y от x. Это удобно реализовать с помощью функции lm

md2 = lm(y ~ poly(x, degree = 2, raw = T))

summary(md2)

> summary(md2)

Call:
lm(formula = y ~ poly(x, degree = 2, raw = T))

Residuals:
 Min 1Q Median 3Q Max 
-1.8682 -0.5005 -0.2633 0.1918 3.5443 

Coefficients:
 Estimate Std. Error t value Pr(>|t|) 
(Intercept) 3.22719 0.30370 10.63 5.90e-11 ***
poly(x, degree = 2, raw = T)1 -1.98521 0.11175 -17.77 4.63e-16 ***
poly(x, degree = 2, raw = T)2 0.95980 0.05275 18.20 2.60e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 1.11 on 26 degrees of freedom
Multiple R-squared: 0.9792, Adjusted R-squared: 0.9776 
F-statistic: 612.4 on 2 and 26 DF, p-value: < 2.2e-16

Теперь настала пора применить и функцию предсказания predict. Для этого выполним три шага:

  1. Создадим вектор новых значений xn, для которых и будут рассчитываться предсказанные значения yn: xn = seq(-5, 5, 0.1)
  2. Создадим новый набор данных xdata, присвоив аргументу х модели функции уже новые значения (x = xn): xdata = data.frame(x = xn)
  3. Вычислим предсказанные значения: yn = predict(md2,newdata = xdata)

Далее можно для большей наглядности построить график полученных новых значений функции, одновременно поместив на график точки значений исходных данных.

xn = seq(-5, 5, 0.1)

xdata = data.frame(x = xn)

yn = predict(md2,newdata = xdata)

plot(xn, yn, lwd = 2, 'l')

points(x, y)

И наконец мы можем просто найти значение предсказанной функции в заданной точке (хотя можем задать и несколько точек):

predict(md2, data.frame(x = 6))

» Вход на сайт

» Поиск

» Работа с файлами

» Вся графика

» Гистогра́мма

» Теория вероятности

» Сравнение групп

» Дисперс анализ

» Блог

» Календарь
«  Апрель 2026  »
ПнВтСрЧтПтСбВс
  12345
6789101112
13141516171819
20212223242526
27282930

» Архив записей


Copyright MyCorp © 2026
uCoz