我试图更好地理解为什么 stat smooth 不会绘制我的多项式回归线,除非我的 x 变量(自变量)首先被分配为绘图之外的值(例如 x <- dataset$Salary)
数据集
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 <- dataset$Salary 与 dataset$Salary 没有什么不同,只是包含在一个值中。我唯一的想法是它与 poly() 如何查看 x(一个数字向量)与它如何将 dataset$Salary 视为提取的向量有关。一世
除此之外,我希望得到相同的结果,但事实并非如此。
我还尝试将 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))