Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
删除R中的单个时间趋势_R - Fatal编程技术网

删除R中的单个时间趋势

删除R中的单个时间趋势,r,R,我有一个数据集: User Date Value 1 A 2011 1 2 A 2012 3 3 A 2013 2 4 A 2014 4 5 A 2015 6 6 B 2011 10 7 B 2012 8 8 B 2013 4 9 B 2014 5 10 B 2015 2 11 C 2011 5 12 C 2012

我有一个数据集:

   User Date Value
1     A 2011     1
2     A 2012     3
3     A 2013     2
4     A 2014     4
5     A 2015     6
6     B 2011    10
7     B 2012     8
8     B 2013     4
9     B 2014     5
10    B 2015     2
11    C 2011     5
12    C 2012     7
13    C 2013     8
14    C 2014     2
15    C 2015     1
由以下代码生成:

d <- data.frame( 
  User = rep( LETTERS[1:3], each=5 ),
  Date = rep(2011:2015,3),
  Value = c(1,3,2,4,6,10,8,4,5,2,5,7,8,2,1)
)
所以A的值在每个时间段都有向上1.1个单位的趋势。因此,我们可以在第一个观测值上加2.2,第二个观测值上加1.1,第三个观测值不变,第四个观测值减去1.1,第五个观测值减去2.2

一旦发生这种情况,用户A就不再有时间趋势了

summary(lm(c(3.2,4.1,2,2.9,3.8)~c(2011:2015)))

Coefficients:
               Estimate Std. Error t value Pr(>|t|)
(Intercept)   3.200e+00  6.039e+02   0.005    0.996
c(2011:2015) -1.404e-16  3.000e-01   0.000    1.000

若你们想要的只是一个差异向量,那个么一个快速的方法就是从包含交互作用的线性模型中得到残差

diffs <- unname(lm(Value ~ User*Date, data=d)$residuals)

diff抱歉,但我认为这不正确,因为它为用户a提供了不同的答案(与我手动计算的结果不同)。当我检查我的手工编制的解决方案时,我发现没有更多的时间趋势。还没有看到您的编辑-添加了我自己的编辑,将与您的答案相匹配。
diffs <- unname(lm(Value ~ User*Date, data=d)$residuals)
diffs <- unname(lm(Value ~ User*Date, data=d)$residuals) + unname(lm(Value ~ User,data=d)$fitted)