在我的数据集中,AP是名称,D是时间,V是值。我想为每个名字绘制一段时间值的线图。
AP D V
1 329 0 27
2 329 16 26
3 329 42 30
4 329 72 30
5 329 106 32
6 329 135 27
7 425 0 28
8 425 30 35
这很容易,如下所示: 我的问题是: 有可能我可以做多项式拟合/线性回归并根据SLOPE对这些行进行分组吗?
THX
答案 0 :(得分:1)
有两种方法,第一种是在OLS回归的背景下使用斜率的定义,即see formula at wikipedia。在这里,我使用dplyr
进行转换,但您也可以在基数R中执行此操作。
data_frame(x = rep(1:10, 10),
y = rnorm(100) - 0.5*x,
grp = rep(letters[1:10], each = 10)) %>%
group_by(grp) %>%
mutate(slope = sum((y - mean(y))*(x - mean(x)))/sum((x - mean(x))^2)) %>%
ggplot(aes(x, y)) +
geom_path(aes(group = grp, colour = slope))
第二种方式是使用broom
以更灵活的方式进行。这是一个例子:
df <- data_frame(x = rep(1:10, 10),
y = rnorm(100) - 0.5*x,
grp = rep(letters[1:10], each = 10))
df.fit <- df %>% group_by(grp) %>%
do(tidy(lm(y~x, data = .))) %>% # or other model
filter(term == "x")
# modify this line to select the correct term of your chosen model
full_join(df, df.fit) %>%
ggplot(aes(x, y)) +
geom_path(aes(group = grp, colour = estimate))