【问题标题】:How can I create a linear regression line on a scatterplot with R?如何使用 R 在散点图上创建线性回归线?
【发布时间】:2012-03-11 06:35:45
【问题描述】:

我尝试使用 abline 函数在散点图上创建线性回归线。

x= c (1.0325477, 0.6746901, 1.0845737, 1.1123872, 1.1060822, 0.8595918, 0.8512941, 1.0148842, 1.0722369, 0.9019220 , 0.8809147, 1.0358256, 0.9903858, 1.0715174 , 1.1034405, 1.0143966,0.9802365, 0.7177169 , 0.9190783, 0.8408701 ) 
y= c (0.8550177, 0.8352162 ,1.0236998, 1.1071665, 0.6768144, 0.8449983 ,0.7616483, 0.8259199, 1.1539598, 1.4125006, 1.0511816, 0.9366184, 1.4101268, 1.2937913, 1.4147219 ,1.2943105 ,0.7859749, 0.6689330, 0.6940164, 0.8093392)
plot(x,y) 
abline(lm(y ~ x))
Error in int_abline(a = a, b = b, h = h, v = v, untf = untf, ...) : 
 plot.new has not been called yet

有什么建议

【问题讨论】:

  • 如果您在plotabline 调用之间关闭绘图窗口(或设备),就会发生这种情况。

标签: r linear-regression


【解决方案1】:

对我来说也很好,其他的也很好。尝试关闭并重新打开 R。

如果还是有问题,可以试试:

# put x and y in a data frame
dat<-data.frame(x=x,y=y)
attach(dat)
plot(x,y) 
abline(lm(y ~ x))

【讨论】:

  • 许多有经验的 R 用户不推荐 attach() 并建议尽可能使用 data 参数(即在 lm 中,但遗憾的是在 plot 中不可用)
  • @BenBolker - with() 足以替代情节,with(dat, plot(y~x))
  • @Chase:是的。对于初学者,我认为plot(dat$x,dat$y) 的相对简单性可能会更好(尽管我喜欢with 并经常使用它)。在plot 中向 R-core 请求 data 参数可能为时已晚...
  • 实际上,plotformula 方法确实有一个data 参数:plot(y~x,data=d)(但没有 plot(x,y,data=d)
【解决方案2】:

绘图(x~y)

abline(lm(x~y))

应该修复该代码。在 MacOs 上它可以工作。

【讨论】:

  • 实际上,这个答案并没有多大用处——您已经翻转了预测变量和响应变量,并且原始代码仍然适用于所有尝试过的人......
【解决方案3】:

首先创建一个文件来显示您的输出,例如 pdf 或 svg 文件,然后相同的代码显然会有所帮助。更多说明

    svg("filename1.svg")
    plot(x ~ y)
    abline(lm(y ~ x))
    dev.off()

【讨论】:

    猜你喜欢
    • 2021-01-28
    • 1970-01-01
    • 2021-11-23
    • 2018-12-27
    • 1970-01-01
    • 2012-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多