Ошибка в modCost (obs = world_data, model = out): объект 'world_data' не найден в R - PullRequest
0 голосов
/ 16 июня 2020

Я пытаюсь скомпилировать следующий код. Это код для калибровки моделей системной динамики.

Это дает мне следующую ошибку.

Ошибка в modCost (obs = world_data, model = out): объект (list) не может быть приведен к типу 'double'

Проблема кажется emerge в функции modCost. . Пожалуйста помоги. Используйте следующий код.

Входной файл можно скачать отсюда - https://www.dropbox.com/s/7ubl5lm5wo8qngz/WorldPopulation.xlsx?dl=0

library(deSolve)
library(gdata)
library(FME)
library(readxl)

WorldPopulation <- read_excel("C:/Users/nikhi/Documents/WorldPopulation.xlsx")
world_data<-WorldPopulation

#simulation time
START<-1960; FINISH<- 2010;STEP<-0.1
simtime<-seq(START, FINISH, by = STEP)
WP_INIT <- 3026002942

#defining the model function (stock and flow equations)
model<-function(time, stocks, auxs){

  with(as.list(c(stocks, auxs)),{

    fPopulationAdded <- Population * aGrowthFraction

    dP_dt <- fPopulationAdded

    return(list(c(dP_dt)))
  })
}

#calling it under a funrction to solve the equation
solveWP<- function(pars){

  stocks<- c(Population = WP_INIT)

  auxs<-c(aGrowthFraction = unname((pars["aGrowthFraction"])))

  return(data.frame(ode(y=stocks, simtime, func = model, parms = auxs, method = "euler")))
}

#calculating cost (deviation from the actual data)
getCost<-function(p)
{
  out<- solveWP(p)
  cost <- modCost(obs = world_data, model = out)
  return (cost)
}

#definining parametrs to be optimized
pars<-c(aGrowthFraction = 0.001)
lower<-c(0.0)
upper <- c(0.2)

#run optimizer

Fit<- modFit(p = pars, f= getCost, lower = lower, upper = upper)  #Error appears here. 

optPar <- c(Fit$par)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...