【问题标题】:Appending regression slope to new vector将回归斜率附加到新向量
【发布时间】:2015-10-24 22:37:00
【问题描述】:

我有一个大型数据集,其中包含站点位置和相关的测量/日期以及可变长度记录。我想在每个站点进行线性回归,并将回归线的斜率附加为我的数据的新向量。

这是我的数据的简化示例:

site_no<- c(1, 1, 1, 2, 2, 3, 3, 4, 4, 4, 4, 5)             
date<- c(1/1/1990, 1/1/1991, 1/1/1992, 1/4/1963, 1/10/1970, 1/10/1975, 
     1/10/1980, 1/1/1990, 1/1/1998, 1/1/1999, 1/1/2000, 1/1/2005)  
measurement<- c(.5, .75, 1.0, .5, .6, 1.0, 1.5, 1.1, 1.2, 1.8, 1.9, 2)   
df<- data.frame(site_no, date, measurement)

如果可以消除单个测量站点,则可以加分,尽管我可以在事前或事后轻松解决这个问题。

我还将这些数据按站点编号拆分为单独的 CSV 文件,所以从这个角度解决问题可能更容易?

感谢任何见解。

【问题讨论】:

  • 或许library(data.table);setDT(df)[, Slope:=coef(lm(measurement~date))[2] , site_no]

标签: r append linear-regression


【解决方案1】:

你可以这样。有点手动,但很透明。

site_no<- c(1, 1, 1, 2, 2, 3, 3, 4, 4, 4, 4, 5)             
 date<- c(1/1/1990, 1/1/1991, 1/1/1992, 1/4/1963, 1/10/1970, 1/10/1975, 
        1/10/1980, 1/1/1990, 1/1/1998, 1/1/1999, 1/1/2000, 1/1/2005)  
 measurement<- c(.5, .75, 1.0, .5, .6, 1.0, 1.5, 1.1, 1.2, 1.8, 1.9, 2)   
 df<- data.frame(site_no, date, measurement)

 fit <- lm(measurement ~ site_no, data=df) 
 fit$coefficients[[1]]
[1] 0.2769231

 fit$coefficients[[2]]
[1] 0.3096154

  df$slope = measurement - (fit$coefficients[[2]]*site_no+fit$coefficients[[1]])

> df
   site_no         date measurement       slope
1        1 5.025126e-04        0.50 -0.08653846
2        1 5.022602e-04        0.75  0.16346154
3        1 5.020080e-04        1.00  0.41346154
4        2 1.273561e-04        0.50 -0.39615385
5        2 5.076142e-05        0.60 -0.29615385
6        3 5.063291e-05        1.00 -0.20576923
7        3 5.050505e-05        1.50  0.29423077
8        4 5.025126e-04        1.10 -0.41538462
9        4 5.005005e-04        1.20 -0.31538462
10       4 5.002501e-04        1.80  0.28461538
11       4 5.000000e-04        1.90  0.38461538
12       5 4.987531e-04        2.00  0.17500000

【讨论】:

    猜你喜欢
    • 2014-08-19
    • 2013-11-17
    • 1970-01-01
    • 1970-01-01
    • 2022-12-18
    • 2019-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多