Я пытаюсь лучше понять, почему stat smooth не будет отображать мою линию полиномиальной регрессии, если только моя переменная x (независимая переменная) не будет назначена в качестве значения вне графика (например, x <- набор данных $ Salary) </p>
Dataset
dataset <- tibble(Level = 1:10,
Salary = c(45000, 50000, 60000, 80000, 110000, 150000, 200000, 300000, 500000, 1000000))
Начальный график, который возвращает ошибку
Ошибка: у 'newdata' было 80 строк, но у найденных переменных 10 строк
ggplot(data = dataset, aes(x = Level, y = Salary)) +
geom_point(color = "red") +
stat_smooth(method = "lm", se = FALSE, formula = dataset$Salary ~
poly(dataset$Level, 3)) +
ggtitle("Truth or Bluff (Linear Regression)") +
xlab("Level ") +
ylab("Salary") +
theme(plot.title = element_text(hjust = 0.5))
Решение, которое сработало
x <- dataset$Level
ggplot(data = dataset, aes(x = Level, y = Salary)) +
geom_point(color = "red") +
stat_smooth(method = "lm", se = FALSE, formula = dataset$Salary ~
poly(x, 3)) +
ggtitle("Truth or Bluff (Linear Regression)") +
xlab("Level ") +
ylab("Salary") +
theme(plot.title = element_text(hjust = 0.5))
Из моего понимания
x <- набор данных $ Зарплата не отличается от набора данных $ Зарплата за исключением того, что содержится в значении. Я думал только, что это связано с тем, как poly () рассматривает x, числовой вектор и как он рассматривает набор данных $ Salary как извлеченный вектор. Я </p>
Кроме этого, я ожидал бы того же результата, но это не так.
Я также попытался переименовать x в t, и он делает именно то, что сделал первый граф, поэтому я не понимаю, почему x так важно, если это просто имя значения.
t <- dataset$Level
ggplot(data = dataset, aes(x = Level, y = Salary)) +
geom_point(color = "red") +
stat_smooth(method = "lm", se = FALSE, formula = dataset$Salary ~
poly(t, 3)) +
ggtitle("Truth or Bluff (Linear Regression)") +
xlab("Level ") +
ylab("Salary") +
theme(plot.title = element_text(hjust = 0.5))