У меня есть этот список_функций, который содержит несколько возможных значений, например «A», «B», «C» и т. Д. И есть время в time_list.Ввод переменных в функцию регрессии
Итак, у меня будет цикл, где я захочу пройти через каждое из этих разных значений и поместить его в формулу.
что-то вроде for(i in ...)
, а затем my_feature <- feature_list[i]
и my_time <- time_list[i]
.
Тогда я положил время и выбранную функцию к dataframe, которые будут использоваться для регрессионного
feature_list<- c("GPRS")
time_list<-c("time")
calc<-0
feature_dim <- length(feature_list)
time_dim <- length(time_list)
data <- read.csv("data.csv", header = TRUE, sep = ";")
result <- matrix(nrow=0, ncol=5)
errors<-matrix(nrow=0, ncol=3)
for(i in 1:feature_dim) {
my_feature <- feature_list[i]
my_time <- time_list[i]
fitdata <- data.frame(data[my_feature], data[my_time])
for(j in 1:60) {
my_b <- 0.0001 * (2^j)
for(k in 1:60) {
my_c <- 0.0001 * (2^k)
cat("Feature: ", my_feature, "\t")
cat("b: ", my_b, "\t")
cat("c: ", my_c, "\n")
err <- try(nlsfit <- nls(GPRS ~ 53E5*exp(-1*b*exp(-1*c*time)), data=fitdata, start=list(b=my_b, c=my_c)), silent=TRUE)
calc<-calc+1
if(class(err) == "try-error") {
next
}
else {
coefs<-coef(nlsfit)
ess<-deviance(nlsfit)
result<-rbind(result, c(coefs[1], coefs[2], ess, my_b, my_c))
}
}
}
}
Сейчас в nls()
вызов Я хочу, чтобы быть в состоянии назвать my_feature вместо просто «A» или «B "или что-то, а затем к следующему в списке. Но я получаю сообщение об ошибке. Что я делаю не так?
1. Полезно, если вы сообщите, какую ошибку вы получите (возможно, сообщение об ошибке копирования)? 2. В вашем коде имеется опечатка: аргументы 'data' и' start' не передаются в 'nls' (скобка закрыта слишком рано) – Marek
Да, код не является точным, поскольку я просто иллюстрировал проблему. Это то, что я не могу использовать переменную my_feature внутри вызова nls, но может только поставить «A» в формулу. – sfactor
Я установил точную форму сейчас – sfactor