[R] Attempting to get a STELLA model into R

Thomas Petzoldt thpe at simecol.de
Mon Dec 1 08:55:16 CET 2008


Gibson, Tyler F wrote:
 > To whomever may be of help,
 >
 > I am a student in a graduate modeling class at the University of
 > North Carolina at Wilmington. I am trying to get a STELLA model
 > converted into R. I am in the process of trying to 're-write' the
 > script into R, but I seem to be missing pieces (i.e. parm values)
 > that are keeping me from being able to replicate this model into R.
 > Does anyone have an idea of a possible solution to my problem? Are
 > there conversion programs or packages available that can convert
 > STELLA models into R format?

Hi Gibson,

I'm working with dynamic systems in R for several years but I don't know 
about any conversion programs.

The good news: AFAIK from old times, STELLA has also an equation view, 
so it should be easy to extract the equations from there. As I remember 
from my scripts, Stella used the following notation:

X(t) = X(t-dt) + mu * dt
INIT X = 1
INFLOWS: mu = X * k
k = 0.1

so you have to rewrite them as differential equations:

mu = X * k
dX/dt = mu

and very similar in R:

mu <- X * k
dX <- mu

Depending on your implementation, parameters may be either constants 
(circle symbol) like the "k" above or hard-coded (and therefore 
"hidden"). How large is your model?

 > Thank you very much for you time, and I hope to hear back from you
 > soon.
 >
 > -Tyler Gibson

Hope it helps

Thomas P.


## Here is an example implementation using the simecol-package.
## It is also possible in the "plain style" according to the
## examples given in package deSolve.

library(simecol)

growth <- new("odeModel",
   main = function(t, init, parms) {
     with(as.list(c(init, parms)), {
       mu <- X * k
       dX <- mu
       list(c(dX))
     })
   },
   init = c(X = 1),
   parms = c(k = 0.1),
   times = seq(0, 10, 0.1),
   solver = "lsoda"
)

growth <- sim(growth)
plot(growth)
View(out(growth))



More information about the R-help mailing list