R中数据框的回归
Regression in data frame in R
嘿,我有以下测试数据:
test = data.frame(Date = c(as.Date("2010-10-10"), as.Date("2010-10-10"), as.Date("2010-12-10"), as.Date("2010-12-10")), Rate = c(0.1, 0.15, 0.16, 0.2), FCF = c(100,200,150,250))
现在我想按日期对数据进行分组,在每组中进行线性回归 FCF~Rate
,然后在每组中执行这些回归以获得每个日期和比率的回归值。我有以下代码:
output = test %>% group_by(Date) %>% do(mod = lm(FCF ~ Rate, data = .))
output = test %>% left_join(output, by = "Date")
output = output %>% ungroup() %>% mutate(Value = predict(mod, newdata = Rate))
没有最后一行一切正常,因为 mod
不是模型而是列表,我无法进行预测。我应该改变什么?
编辑:
当我评估这段代码时:
output = test %>% group_by(Date) %>%
do(mod = lm(FCF ~ Rate, data = .))
output = test %>% left_join(output, by = "Date")
output = output %>% ungroup()
我得到:
问题是如何使用 mod
列中的模型来计算 Rate
列中 Rates 的预测值。
这是一种方法
library(dplyr)
library(purrr)
test %>%
nest_by(Date) %>%
mutate(mod = list(lm(FCF ~ Rate, data = data))) %>%
ungroup %>%
mutate(out = map2(data, mod,
~ predict(.y, newdata = data.frame(Rate = .x$Rate))))
-输出
# A tibble: 2 x 4
# Date data mod out
# <date> <list<tibble>> <list> <list>
#1 2010-10-10 [2 × 2] <lm> <dbl [2]>
#2 2010-12-10 [2 × 2] <lm> <dbl [2]>
如果我们还需要 'Pred' 列
library(tidyr)
out <- test %>%
nest_by(Date) %>%
mutate(mod = list(lm(FCF ~ Rate, data = data))) %>%
ungroup %>%
mutate(data = map2(data, mod, ~ .x %>%
mutate(Pred = predict(.y, newdata = cur_data())))) %>%
unnest(data)
嘿,我有以下测试数据:
test = data.frame(Date = c(as.Date("2010-10-10"), as.Date("2010-10-10"), as.Date("2010-12-10"), as.Date("2010-12-10")), Rate = c(0.1, 0.15, 0.16, 0.2), FCF = c(100,200,150,250))
现在我想按日期对数据进行分组,在每组中进行线性回归 FCF~Rate
,然后在每组中执行这些回归以获得每个日期和比率的回归值。我有以下代码:
output = test %>% group_by(Date) %>% do(mod = lm(FCF ~ Rate, data = .))
output = test %>% left_join(output, by = "Date")
output = output %>% ungroup() %>% mutate(Value = predict(mod, newdata = Rate))
没有最后一行一切正常,因为 mod
不是模型而是列表,我无法进行预测。我应该改变什么?
编辑: 当我评估这段代码时:
output = test %>% group_by(Date) %>%
do(mod = lm(FCF ~ Rate, data = .))
output = test %>% left_join(output, by = "Date")
output = output %>% ungroup()
我得到:
问题是如何使用 mod
列中的模型来计算 Rate
列中 Rates 的预测值。
这是一种方法
library(dplyr)
library(purrr)
test %>%
nest_by(Date) %>%
mutate(mod = list(lm(FCF ~ Rate, data = data))) %>%
ungroup %>%
mutate(out = map2(data, mod,
~ predict(.y, newdata = data.frame(Rate = .x$Rate))))
-输出
# A tibble: 2 x 4
# Date data mod out
# <date> <list<tibble>> <list> <list>
#1 2010-10-10 [2 × 2] <lm> <dbl [2]>
#2 2010-12-10 [2 × 2] <lm> <dbl [2]>
如果我们还需要 'Pred' 列
library(tidyr)
out <- test %>%
nest_by(Date) %>%
mutate(mod = list(lm(FCF ~ Rate, data = data))) %>%
ungroup %>%
mutate(data = map2(data, mod, ~ .x %>%
mutate(Pred = predict(.y, newdata = cur_data())))) %>%
unnest(data)