Access saved stan object- extract parameter number

Issue: the function get_num_upars to access the number of unconstrained parameters from a stan objecti does not work with previously saved stan object

  • Test Model and Data
modelcode <- "
data{
  int<lower=0> N;          // number of data points
  real Y[N];               // 
}

parameters{
  real mu;
  real<lower=0> eta;
}

transformed parameters{
  real<lower=0> sigma;
  sigma = 1 / eta;
}

model{
  mu ~ normal(0,10);
  sigma ~ cauchy(0,1);
}

generated quantities{
  real Yhat[N];
  for(n in 1:N){
    Yhat[n] = Y[n] + 1;
  }
}

"

model <- stan_model(model_code = modelcode)

dataList <- list(
N=50,
Y=rnorm(50,0,1)
)

fit <- sampling(object = model, data = dataList)

get_num_upars(fit)     
# number of parameters are returned as expected, in this case:2
  • Problem

The stan object can be saved in multiple ways:

# method 1: save the stan object as .rdata
save(list="fit",file = "savefile.rdata")
load("savefile.rdata")        # load stan object "fit" into global environment

# method 2: save as rds
saveRDS(fit,"fit.rds")
fit1 <- readRDS("fit.rds")  # create a new stan object "fit1" from saved RDS file

# get_num_upars does not work with either
get_num_upars(fit1)
# an error is returned: the model object is not created or not valid

A list of actions are mentioned at Access contents of stanfit object. These actions can be normally performed with the saved object fit1 without any problems.