Ошибка при переносе: оператор $ недопустим для атомов c - PullRequest
0 голосов
/ 25 марта 2020

Я продолжаю получать это сообщение об ошибке, я не слишком уверен, что пошло не так, как я пытаюсь сделать анализ линейной регрессии.

Ind_v является независимой переменной, а dep_v является зависимой переменной. Я переключил data.frame на [], и он тоже не работает. Всем большое спасибо!

Я разделил данные тренировок и тестов на 70 / 30.

linear_regression <- function(training_dataset, 
                                  test_dataset, 
                                  dependent_variables,
                                  independent_variables){

formular_me <- paste(dependent_variables, "~", independent_variables)
linear_model <- lm(formula = formular_me, data = training_dataset)

ind_v_from_test_dataset <- subset(test_dataset,select=independent_variables)

linear_model_analysis <- predict(linear_model,ind_v_from_test_dataset)

dep_v_from_test_dataset <- test_dataset[,dependent_variables]

RMSE_me <- round(Nrmse(actual = dep_v_from_test_dataset, predicted = linear_model_analysis),digits=2)
MAE_me <- round(Nmae(actual = dep_v_from_test_dataset,predicted = linear_model_analysis),digits=2)
R2_me <- round(Nr2(linear_model_analysis),digits=2)

linear_analysis_error <- dep_v_from_test_dataset - linear_model_analysis
linear_results<- data.frame(dep_v_from_test_dataset,ind_v_from_test_dataset,linear_analysis_error)
linear_results<- linear_analysis_error[order(ind_v_from_test_dataset),]

plot(linear_results[,independent_variables],
     linear_results$ind_v_from_test_dataset,
     pch=4,
     ylab="dependent variable",
     xlab="independent variables",
     main="Linear Regression Errors",
     sub=paste("MAE=",mae,"RMSE=",RMSE," R2=",r2))


abline(linear_model,col = "blue", lwd=6)


suppressWarnings(arrows(linear_results[,ind_v_from_test_dataset],
                        linear_results$dep_v_from_test_dataset,
                        linear_results[,independent_variables],
                        linear_results$dep_v_from_test_dataset-linear_results$error,
                        length=0.05,angle=90,code=3,col="red"))

return(
  list(RMSE_me=RMSE,
  MAE_me=mae,
  R2_me=r2))

}

...