Skip to content

Instantly share code, notes, and snippets.

@MJacobs1985
Created February 21, 2022 12:33
Show Gist options
  • Select an option

  • Save MJacobs1985/dba2239e1f33e7b0e2732fda9e8ef455 to your computer and use it in GitHub Desktop.

Select an option

Save MJacobs1985/dba2239e1f33e7b0e2732fda9e8ef455 to your computer and use it in GitHub Desktop.
dfnew%>%filter(!is.na(comp3_provided))%>%
dplyr::select(ogn_id,curve_day,
feed_provided,
comp1_provided,
comp2_provided,comp3_provided)
### Forecast summed feed curves over time
testdata2<-dfnew%>%
group_by(date_interval, lcn_id, newField) %>%
mutate(comp2_provided = ifelse(is.na(comp2_provided),0,comp2_provided),
comp1_provided_2 = ifelse(curve_day<30, comp1_provided, NA),
comp2_provided_2 = ifelse(curve_day<30, comp2_provided, NA))%>%
dplyr::select(ogn_id,
lcn_id,
curve_day,
feed_provided,
comp1_provided,
comp1_provided_2,
comp2_provided,
comp2_provided_2,
newField,
date_interval,
animals_actual,
feed_provided_cum)
testdata2$pred1<-predict(m1_gam_comp1$gam,
newdata=testdata2)
testdata2$pred2<-predict(m1_gam_comp2$gam,
newdata=testdata2)
g1<-testdata2%>%
group_by(ogn_id, curve_day)%>%
summarize(prov1 = sum(comp1_provided_2),
pred1 = sum(pred1))%>%
ggplot(., aes(x=curve_day))+
geom_point(aes(y=prov1), col="black")+
geom_line(aes(y=prov1), col="black")+
geom_point(aes(y=pred1), col="red", alpha=0.5)+
geom_line(aes(y=pred1), col="red", alpha=0.5)+
theme_bw()+
labs(x="Day in Curve",
y="Feed",
fill="Farm",
title="Forecasting for Component 1 per Farm ",
subtitle ="Black is actual provided - Red is forecasted")+
facet_wrap(~ogn_id)
g2<-testdata2%>%
group_by(ogn_id, curve_day)%>%
summarize(prov2 = sum(comp2_provided_2),
pred2 = sum(pred2))%>%
ggplot(., aes(x=curve_day))+
geom_point(aes(y=prov2), col="black")+
geom_line(aes(y=prov2), col="black")+
geom_point(aes(y=pred2), col="seagreen", alpha=0.5)+
geom_line(aes(y=pred2), col="seagreen", alpha=0.5)+
theme_bw()+
labs(x="Day in Curve",
y="Feed",
fill="Farm",
title="Forecasting for Component 2 per Farm ",
subtitle ="Black is actual provided - Green is forecasted")+
facet_wrap(~ogn_id)
### CUMULATIVE OVER TIME IS NOT CORRECT!!
g3<-testdata2%>%
arrange(ogn_id, lcn_id, newField, curve_day)%>%
group_by(ogn_id,curve_day)%>%
summarize(prov1 = comp1_provided_2,
prov1_sum = sum(comp1_provided_2),
pred1 = pred1,
pred1_sum = sum(pred1),
prov2 = comp2_provided_2,
prov2_sum = sum(comp2_provided_2),
pred2 = pred2,
pred2_sum = sum(pred2))%>%
filter(row_number()==1)%>%
group_by(ogn_id)%>%
summarize(curve_day = curve_day,
prov1_cumsum = cumsum(prov1_sum),
pred1_cumsum = cumsum(pred1_sum),
prov2_cumsum = cumsum(prov2_sum),
pred2_cumsum = cumsum(pred2_sum))%>%
distinct()%>%
ggplot(., aes(x=curve_day))+
geom_point(aes(y=prov1_cumsum ),col="black", alpha=0.5)+
geom_line(aes(y=prov1_cumsum ), col="black", alpha=0.5)+
geom_point(aes(y=pred1_cumsum), col="red", alpha=0.5)+
geom_line(aes(y=pred1_cumsum), col="red", alpha=0.5)+
geom_point(aes(y=prov2_cumsum ),col="black", alpha=0.5)+
geom_line(aes(y=prov2_cumsum ), col="black", alpha=0.5)+
geom_point(aes(y=pred2_cumsum), col="seagreen", alpha=0.5)+
geom_line(aes(y=pred2_cumsum), col="seagreen", alpha=0.5)+
theme_bw()+
labs(x="Day in Curve",
y="Cumulative Feed",
fill="Farm",
title="Forecasting for Component 1 & 2 per Farm",
subtitle="Black is actual - red(comp1) & green(comp2) are forecasted from day 30 onwards")+
facet_wrap(~ogn_id)
grid.arrange(g1,g2,g3,ncol=1)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment