stat_smooth - 可变长度不同

时间:2016-10-30 10:20:57

标签: r ggplot2

我想使用ggplot相互绘制两个变量。后来我想使用非线性拟合,但是我遇到了一个我不完全理解的错误信息的问题。我可以看到其他人有类似的问题,但我可能不够明亮,无法理解答案

我有一个包含4个变量的数据集ost。数据集中没有NA。

使用ggplot2我想用回归线绘制数据。为简单起见,我从简单的线性回归

开始
library(ggplot2)

qt_int <- c(404, 402, 426, 392, 418, 410)
rr <- c(1000, 958, 982, 752, 824, 844)
gender <- c('male','female','female','female','female','female')
deltnr <- c(10445, 1022, 9122, 60, 246, 306)
df = data.frame(deltnr, gender, qt_int, rr)   

p <- ggplot(df, aes(rr, qt_int))
p <- p + geom_point (size = 2)
p <- p + stat_smooth(method = "lm", formula = qt_int ~ rr)
p

我收到以下警告信息:

  

警告消息:1:'newdata'有80行,但找到的变量有   6702行2:stat_smooth()中的计算失败:争论者   antyder forskelligtantalrækker:80,6 [En:论点建议   不同的行数:80,6]

奇怪的是,如果我省略公式(但我后来要做非线性拟合,那么我必须让它工作)

我错过了什么?

1 个答案:

答案 0 :(得分:4)

stat_smooth()中的公式应使用审美对象的名称(xycolour等),而不是变量的名称。见help("stat_smooth")

  

公式:用于平滑功能的公式,例如。 'y~x','y~poly(x,2)','y~log(x)'

OP写道:

p <- p + stat_smooth(method = "lm", formula = qt_int ~ rr)

但是编写公式的正确方法是:

p <- p + stat_smooth(method = "lm", formula = y ~ x)

产生预期的输出:

enter image description here