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_Time_Series_Trend_Trendline - Fatal编程技术网

R 按组获取多个时间序列的趋势线斜率

R 按组获取多个时间序列的趋势线斜率,r,time,series,trend,trendline,R,Time,Series,Trend,Trendline,我有一个数据集,包含不同组的多个长格式时间序列。 我需要得到每个组的趋势线斜率,这样我就可以知道序列是在增加还是在减少 我的df看起来像这样: Group Date (M-YY) Value Group A mar-18 0.733412181 Group A abr-18 0.698969331 Group A may-18 0.607338572 Group A jun-18 0.143834025 Group A jul-18 0.036449478 Group A ago-

我有一个数据集,包含不同组的多个长格式时间序列。 我需要得到每个组的趋势线斜率,这样我就可以知道序列是在增加还是在减少

我的df看起来像这样:

Group   Date (M-YY) Value
Group A mar-18  0.733412181
Group A abr-18  0.698969331
Group A may-18  0.607338572
Group A jun-18  0.143834025
Group A jul-18  0.036449478
Group A ago-18  0.115030334
Group A sept-18 0.292299769
Group A oct-18  0.940266543
Group A nov-18  0.838158609
Group A dic-18  0.467750831
Group B mar-18  0.466147825
Group B abr-18  0.670841589
Group B may-18  0.605945948
Group B jun-18  0.492835505
Group B jul-18  0.840924612
Group B ago-18  0.70177121
Group B sept-18 0.377545249
Group B oct-18  0.968598222
Group B nov-18  0.480427212
Group B dic-18  0.681482744

要获取每个组的坡度,请执行以下操作:

summary(lm(Value~Date,df[df$Group==“A”,]))
汇总(lm(价值~日期,df[df$Group==“B”,]))
要绘图

绘图(df$日期,df$值)
abline(lm(Value~Date,df[df$Group==“A”,]),col=“blue”)
abline(lm(Value~Date,df[df$Group==“B”,]),col=“red”)
使用
tidyverse
的解决方案:

df%>%
分组依据(分组)%>%
do(浏览(lm(值~日期,数据=))
这个怎么样

#subset data
groupA = subset.data.frame(data, Group =="Group A")

#plot data
plot(groupA$Date, groupA$Value)
abline(lm(Value ~ 1:length(groupA$Date))

对于B组,您也可以重复上述操作

如果您按组列分组,然后添加行数()列,您可以对每个组的值与行数字段进行线性回归,并使用摘要选择斜率系数

library(dplyr)

df %>% 
  group_by(Group) %>% 
  mutate(rownum = row_number()) %>% 
  summarise(slope = lm(Value ~ rownum)$coefficients['rownum'])

# # A tibble: 2 x 2
#   Group     slope
#   <chr>     <dbl>
# 1 Group_A 0.00468
# 2 Group_B 0.0117 

你能提供你的代码而不是输出吗?你的例子是可复制的
structure(list(Group = c("Group_A", "Group_A", "Group_A", "Group_A", 
"Group_A", "Group_A", "Group_A", "Group_A", "Group_A", "Group_A", 
"Group_B", "Group_B", "Group_B", "Group_B", "Group_B", "Group_B", 
"Group_B", "Group_B", "Group_B", "Group_B"), Date = c("mar-18", 
"abr-18", "may-18", "jun-18", "jul-18", "ago-18", "sept-18", 
"oct-18", "nov-18", "dic-18", "mar-18", "abr-18", "may-18", "jun-18", 
"jul-18", "ago-18", "sept-18", "oct-18", "nov-18", "dic-18"), 
    Value = c(0.733412181, 0.698969331, 0.607338572, 0.143834025, 
    0.036449478, 0.115030334, 0.292299769, 0.940266543, 0.838158609, 
    0.467750831, 0.466147825, 0.670841589, 0.605945948, 0.492835505, 
    0.840924612, 0.70177121, 0.377545249, 0.968598222, 0.480427212, 
    0.681482744)), row.names = c(NA, -20L), class = "data.frame")