r语言 - 将回归斜率附加到新向量上



我有一个网站位置和相关测量/日期的大数据集,具有可变长度的记录。我想在每个位置做一个线性回归,并附加回归线的斜率作为我的数据的新向量。

下面是我的数据的一个简化示例:

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文件,所以也许从这个角度更容易解决问题?

你可以这样做。一个小手册,但透明。

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

最新更新