Подгонка кривой / линии в R - PullRequest
1 голос
/ 27 мая 2020

Я рисую график между уровнем и расходом реки. Затем я хочу провести линию по точкам разброса.
Мой фрейм данных df1 имеет 4704 строки и 2 столбца - разряд и уровень.

fit  <- lm(df1$Level ~ df1$Discharge)
xx <- seq(0, max(df1$Discharge), length = 4704)
plot(x = df1$Discharge, y = df1$Level, pch = 19)
lines(xx, predict(fit, data.frame(x = xx)), col = "red")

Вместо прямой линии я получаю что-то другое.

enter image description here

Я хочу знать, есть ли способ получить прямую линию, которая соответствует точкам разброса? Пожалуйста, направь меня.

1 Ответ

0 голосов
/ 27 мая 2020

Было бы лучше, если бы вы предоставили данные, из того, что я вижу, выполнение прогнозирования без предоставления data.frame с правильным именем переменной могло бы вызвать проблему. Если я перезапущу ваш код для некоторых данных:

set.seed(100)
df1 = data.frame(Level=runif(4704))
df1$Discharge=20*df1$Level + runif(4704)
fit  <- lm(Level ~ Discharge, data = df1)
xx <- seq(0, max(df1$Discharge), length = 4704)
plot(x = df1$Discharge, y = df1$Level, pch = 19)

Эта строка выдает ошибку:

lines(xx, predict(fit, data.frame(x = xx)), col = "red")
Error in eval(predvars, data, env) : object 'Discharge' not found

Если вы измените имена столбцов, это сработает:

lines(xx, predict(fit, data.frame(Discharge = xx)), col = "red")

Приведите воспроизводимый пример.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...