R - Abline和对数X轴在图中给出水平回归线



首先,请从 http://alexandervanloon.nl/survey_oss.csv 下载我的数据集,然后执行脚本的以下内容来获取一些散点图:

# read data and attach it
survey <- read.table("survey_oss.csv", header=TRUE)
attach(survey)
# plot for inhabitants
png("scatterINHABT.png")
plot(INHABT, OSSADP, xlab="Inhabitants", ylab="Adoption of OSS", las=1)
abline(lm(OSSADP~INHABT)) # regression line (y~x)
dev.off()
# plot for inhabitants divided by 1000
png("scatterINHABT_divided.png")
plot(INHABT/1000, OSSADP, xlab="Inhabitants", ylab="Adoption of OSS", las=1)
abline(lm(OSSADP~INHABT)) # regression line (y~x)
dev.off()
# plot for inhabitants in logarithmic scale
png("scatterINHABT_log.png")
plot(INHABT, OSSADP, xlab="Inhabitants", ylab="Adoption of OSS", las=1, log="x")
abline(lm(OSSADP~INHABT)) # regression line (y~x)
dev.off()
# plot for inhabitants in logarithmic scale and divided by 1000
png("scatterINHABT_log_divided.png")
plot(INHABT/1000, OSSADP, xlab="Inhabitants", ylab="Adoption of OSS", las=1, log="x")
abline(lm(OSSADP~INHABT)) # regression line (y~x)
dev.off()

如您所见,在第一个散点图中,问题是R决定使用科学记数法,并且由于异常值,数据看起来很奇怪。这就是为什么我希望 x 轴上的居民以千计,并且让 x 轴也使用对数刻度。

问题是双重的。首先,我可以通过简单地将居民除以 1000 来摆脱科学记数法,但这会产生一条与第一个图不同的平坦水平回归线。我知道还有其他方法可以解决此问题,例如不希望在绘图轴上使用科学记数法,但我无法根据我的情况调整那里的代码。

其次,将 x 轴切换到对数刻度也会使回归线变平。谷歌指出 https://stat.ethz.ch/pipermail/r-help/2006-January/086500.html 是可能的解决方案的第一个结果,我尝试使用那里建议abline(lm(OSSADP~log10(INHABT))),但这会产生一条垂直回归线。如果我将两者除以 1000 并使用对数刻度,这条线也是水平的。

是一名社会科学家,没有任何数学和统计学背景,所以我担心我可能会错过一些明显的东西,如果是这样,我很抱歉。非常感谢大家的任何潜在帮助。

不久前,R 邮件列表中涵盖了科学记数法

,但您可以控制 R 如何选择何时使用 options()$scipen 进行科学记数法。

options(scipen=10)
plot(INHABT, OSSADP, xlab="Inhabitants", ylab="Adoption of OSS")
其次,你除以

1000 的问题在于你没有在plotabline中除以一千。这将解决问题:

plot(INHABT/1000, OSSADP, xlab="Inhabitants", ylab="Adoption of OSS")
abline(lm(OSSADP~I(INHABT/1000))) # Fixed regression line.

I是必需的,因为/符号在 formula s 中具有不同的含义。

此外,您的las参数是不必要的。

我解决了使用时的水平线问题log="x"如下:

plot(INHABT, OSSADP, xlab="Inhabitants", ylab="Adoption of OSS", log="x")
abline(lm(OSSADP~log10(INHABT)))

log10而不仅仅是log.

相关内容

  • 没有找到相关文章

最新更新