我试图将具有不同残差权重的不同阶多项式添加到单个ggplot中:
p <- ggplot(data = mydf, mapping = aes(x, y)) + geom_point()
# Add Polynomials with Varying Weights
for (i in 1:3){
for (j in 1:3){
p <- p+ stat_smooth(method = 'lm', formula= y~poly(x,i), aes(weight= 1/x^j), se=FALSE)
}
}
print(p)
问题是,该图仅显示最后一条平滑线(在这种情况下,是三阶多项式,权重为1 / x ^ 3。 帮助将不胜感激。
答案 0 :(得分:0)
如果在循环中添加调试print(p)调用,您将看到lm调用为每个内部J值生成3个相同的图,并且唯一的差异是由于I-值的变化而发生的(多项式如果权重都相同,则与默认权重值相比将没有任何作用。
mydf <- data.frame(x = 1:20, y=4 +(1:20)^2 + (1:20)^3+rnorm(20,0,5) )
p <- ggplot(data = mydf, mapping = aes(x, y)) + geom_point()
for (i in 1:3){
for (j in 1:3){
p <- p+ stat_smooth(method = 'lm', formula= y~poly(x,i), aes(weight= j), se=FALSE)
print(p) }
}
您可能已经想象过使用+.gg
会创建额外的图,但事实并非如此。