데이터 세트에서 ARIMA 모델링을 실행하고 결과를 그래프 및 텍스트 요약 형태로 표시하는 Shiny 앱을 개발 중입니다. 출력은 사용자가이 모델이 실행될 데이터 세트에서 오브젝트를 선택할 수 있어야한다는 점에서 대화식입니다.다른 함수에서 ggplot 입력을 반환하지 않는 빛나는 반응
Server.R 코드 -
server <- function(input, output) {
my_data <-fread("Branch_Final_Cleaned.csv")
myreactive_plot<-reactive({
get_my_plot(input$select_ID, my_data)
})
output$branch_regression_plot <- renderPlot({
myreactive_plot()
})
}
"select_ID는"사용자가 데이터베이스에서 개체를 선택하게됩니다 입력 변수입니다. 이를 식별하는 기본 키는 ID입니다. "select_ID"를 참조
ui.R 코드 -
selectInput(
inputId = "select_ID",
"Select Branch ID",
selected = "106841",
sort(unique(branch$ID))
)
주 : 분기 $ ID는 I가 회귀를 실행 데이터 세트의 단지 사본입니다. branch $ ID는 기본 키 (ID)로 사용자가 "select_ID"입력을 선택하는 드롭 다운 목록을 채우기 만합니다.
데이터 조작, 회귀 및 플로팅은 사용자 정의 함수에서 수행됩니다. 아래에 -
get_my_plot <- function(id, branch_analysis) {
branch_analysis <- fread("Branch_Final_Cleaned.csv")
data_branch_analysis <- data.table(branch_analysis)
data_branch_analysis<-(data_branch_analysis[ID==id])[order(DATE)]
data_branch_analysis[,NDATE:=as.Date(DATE,"%Y.%m.%d")]
data_branch_analysis[,L_AVG_AGE:=shift(AVG_AGE,1)]
data_branch_analysis[,L_AVG_WAGE:=as.numeric(shift(AVG_WAGE,1))]
data_branch_analysis[,WD:=format.Date(NDATE,"%a")]
data_branch_analysis[,time:=as.numeric(NDATE-min(data_branch_analysis$NDATE))]
data_branch_analysis[is.na(AGE_0_17),AGE_0_17:=0]
data_branch_analysis[is.na(AGE_18_25),AGE_18_25:=0]
data_branch_analysis[is.na(AGE_26_35),AGE_26_35:=0]
data_branch_analysis[is.na(AGE_36_45),AGE_36_45:=0]
data_branch_analysis[is.na(AGE_46_55),AGE_46_55:=0]
data_branch_analysis[is.na(AGE_56_65),AGE_56_65:=0]
data_branch_analysis[is.na(AGE_66_99),AGE_66_99:=0]
data_branch_analysis[is.na(W3_7),W3_7:=0]
data_branch_analysis[is.na(W7_14),W7_14:=0]
data_branch_analysis[is.na(W14_21),W14_21:=0]
data_branch_analysis[is.na(W21_99),W21_99:=0]
data_branch_analysis[,L_AGE_0_17:=shift(AGE_0_17,1)]
data_branch_analysis[,L_AGE_18_25:=shift(AGE_18_25,1)]
data_branch_analysis[,L_AGE_26_35:=shift(AGE_26_35,1)]
data_branch_analysis[,L_AGE_36_45:=shift(AGE_36_45,1)]
data_branch_analysis[,L_AGE_46_55:=shift(AGE_46_55,1)]
data_branch_analysis[,L_AGE_56_65:=shift(AGE_56_65,1)]
data_branch_analysis[,L_AGE_66_99:=shift(AGE_66_99,1)]
data_branch_analysis[,L_W3_7:=shift(W3_7,1)]
data_branch_analysis[,L_W7_14:=shift(W7_14,1)]
data_branch_analysis[,L_W14_21:=shift(W14_21,1)]
data_branch_analysis[,L_W21_99:=shift(W21_99,1)]
fit1<-lm(data=data_branch_analysis,VISITOR_NUM~0+time+WD+L_W3_7+L_W7_14+L_W14_21+L_W21_99+L_AVG_AGE+L_AVG_WAGE+L_AGE_0_17+L_AGE_18_25+L_AGE_26_35+L_AGE_36_45+L_AGE_46_55+L_AGE_56_65+L_AGE_66_99)
bestm<-step(fit1, trace = FALSE)
ntrain=199
data_branch_analysis_train<-head(bestm$model,ntrain)
data_reg<-copy(data.table(bestm$model))
data_reg[,MON:=ifelse(WD=="Mon",1,0)]
data_reg[,TUE:=ifelse(WD=="Tue",1,0)]
data_reg[,WED:=ifelse(WD=="Wed",1,0)]
data_reg[,THU:=ifelse(WD=="Thu",1,0)]
data_reg[,FRI:=ifelse(WD=="Fri",1,0)]
data_reg$WD<-NULL
data_reg$VISITOR_NUM<-NULL
x_reg<-head(data_reg,ntrain)
fit2<-auto.arima(data_branch_analysis_train$VISITOR_NUM,max.order=30,xreg=as.matrix(x_reg))
#nrow(data_branch_analysis)-(ntrain+1)
new_x<-tail(data_reg,nrow(data_branch_analysis)-(ntrain+1))
fore2<-forecast(fit2,xreg=as.matrix(new_x))
g <-
ggplot()+geom_line(aes(x=data_branch_analysis$NDATE,y=data_branch_analysis$VISITOR_NUM,col="original"))+
geom_line(aes(x=data_branch_analysis$NDATE[2:(ntrain+1)],y=fit2$fitted,col="train"))+
geom_line(aes(x=data_branch_analysis$NDATE[(ntrain+2):nrow(data_branch_analysis)],y=fore2$mean,col="test"))
return(g)
}
이제 get_my_plot 함수는 개별적으로 실행될 때 ggplot을 반환합니다. 그러나 앱 자체를 실행할 때 출력이 표시되지 않습니다. 여기서 무엇을 할 수 있습니까?
또한 get_my_plot 함수에서 ggplot 그래프를 반환하면서 텍스트 출력을 반환 할 수 있습니까? 회귀 모델에 대한 요약()과 정확도()를 반환하고 싶습니다. 그렇다면 서버에서 textOutput 호출을 개별적으로 참조 할 수 있습니까?
감사합니다.
"기계 학습"또는 "인공 지능"과 관련하여 어떤 질문이 있습니까? – PoGibas
'get_my_plot (입력 $ select_ID, my_data)'? –
@PoGibas 강조 표시 해 주셔서 감사합니다. 그들을 제거했습니다. 건배. –