简体   繁体   English

在 boxplot r 中添加回归线

[英]Add regression line in boxplot r

I used the codes below to add a regression line after a boxplot.我使用下面的代码在箱线图后添加回归线。

boxplot(yield~Year, data=dfreg.raw,
        ylab = 'Yield (bushels/acre)',
        col = 'orange')
yield.year <- lm(yield~Year, data = dfreg.raw)
abline(reg = yield.year)

However, the regression line did not show up.然而,回归线并没有出现。 The plot I got is below我得到的情节在下面在此处输入图片说明

My data looks like this.我的数据看起来像这样。 It's a panel data, which might end up problems with regression line.这是一个面板数据,最终可能会出现回归线问题。

> head(dfreg.raw)
# A tibble: 6 x 15
  index  Year yield State.Code  harv frez_j  dd_j cupc_j sm7_j fitted_j max_spring_j sp_spring_j
  <dbl> <dbl> <dbl>      <dbl> <dbl>  <dbl> <dbl>  <dbl> <dbl>    <dbl>        <dbl>       <dbl>
1 16001  1984 105           16  7200   330. 2438.   7.32  53.4     49.1         19.7       0.863
2 16001  1985  96.8         16  8200   413. 2407.   5.71  52.5     48.4         23.9      -0.391
3 16001  1986  94.9         16  7400   476. 2638.   8.34  52.5     48.4         23.4      -0.122
4 16001  1987 106.          16  9700   154. 2838.   5.44  54.4     49.9         25.6      -0.485
5 16001  1988  89.6         16  7600   184. 2944.   3.28  54.5     50.0         23.9       0.115
6 16001  1989  96.4         16  7300   383. 2766.   5.91  52.6     48.4         23.5      -1.02 
# … with 3 more variables: pc_spring_j <dbl>, lt <dbl>, qt <dbl>


Anyone has any idea on this?有人对此有任何想法吗?

The x values are 1:max(levels of x variable), so the abline doesn't work. x 值为 1:max(x 变量的级别),因此 abline 不起作用。 You can try something like this below.你可以在下面尝试这样的事情。

First simulate a dataset:首先模拟一个数据集:

dfreg.raw= data.frame(
yield=rpois(100,lambda=rep(seq(60,100,by=10),each=20)),
Year=rep(1995:1999,each=20)
)

Then plot:然后情节:

boxplot(yield~Year, data=dfreg.raw,
        ylab = 'Yield (bushels/acre)',
        col = 'orange')
yield.year <- lm(yield~Year, data = dfreg.raw)

Get a unique ascending vector of Years, and predict获得一个唯一的年份上升向量,并预测

X = sort(unique(dfreg.raw$Year))
lines(x=1:length(X),
y=predict(yield.year,data.frame(Year=X)),col="blue",lty=8)

在此处输入图片说明

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM