我有类似的数据:
sample <- read.table(text =
" value date
-5.4 2017-03-01
-2.2 2017-03-05
-1.1 2017-03-10
4.9 2017-03-12
4.8 2017-03-22
5.6 2017-04-02
-0.3 2017-04-11
0.6 2017-04-16
3.3 2017-04-20
5.2 2017-04-22 ", header = T)
sample$date = as.Date(sample$date)
我用这些值绘制了一个具有线性回归趋势的图:
plot(sample$date,sample$value)
abline(lm(sample$value ~ sample$date))
我想从回归线中找到最低和最高“值”之间的差异。我在情节上用红色标记了这些点。
如何在R中做到这一点?
我的想法是在回归线上以某种方式在我的数据集的每个日期对应一列值,但是我很难做到这一点。
答案 0 :(得分:4)
这可能很简单(我将您的数据框重命名为SAMPLE
,并从模型公式中删除了$
):
fit <- lm(value ~ date, data = SAMPLE)
diff(range(fit$fitted))
我的想法是在回归线上以某种方式在我的数据集的每个日期对应一列值,但是我很难做到这一点。
所需的列称为“拟合值”,lm
将其返回。
备注1
以上结果始终是一些正值,而不管是上升还是下降行,因为range
在min
之前返回max
。您可以通过斜率的符号对其进行调整,以使其对于上升线为正,对于下降线为负。
diff(range(fit$fitted)) * sign(fit$coef[2])
备注2
正如Maurits Evers所说,您也可以使用predict(fit)
而不是fit$fitted
。
答案 1 :(得分:1)
find: ‘/home/user/my/directory/*’: No such file or directory