R 如何处理超过10GB的stan结果

R 如何处理超过10GB的stan结果,r,snow,stan,R,Snow,Stan,我有一个预测时间序列的模型。所以我只有5个参数,我用它来计算时间序列,作为转换后的参数,生成一个7200x3的矩阵,然后与观测值进行比较 到目前为止还不错-在进行100次迭代时,效果如预期。 但现在我用SNOW来并行计算,创建6x1000次迭代。花了一个小时,但看起来不错。唯一的问题是我无法再加载生成的rdata文件。它的大小是11GB——可能就是这样 我需要增加模拟的数量,所以我需要找到一种处理这种大小数据的方法。其他人如何处理这个问题 代码 (尝试制作一个简单的示例,以便可读) R脚本 库(

我有一个预测时间序列的模型。所以我只有5个参数,我用它来计算时间序列,作为转换后的参数,生成一个7200x3的矩阵,然后与观测值进行比较

到目前为止还不错-在进行100次迭代时,效果如预期。 但现在我用SNOW来并行计算,创建6x1000次迭代。花了一个小时,但看起来不错。唯一的问题是我无法再加载生成的rdata文件。它的大小是11GB——可能就是这样

我需要增加模拟的数量,所以我需要找到一种处理这种大小数据的方法。其他人如何处理这个问题

代码

(尝试制作一个简单的示例,以便可读)

R脚本

库(rstan)
图书馆(foreach)
图书馆(doSNOW)

model.c将数据保存为块或另存为ASCII文件并读取块或使用数据库或使用bigmemory包。发布代码。很可能你不需要保存所有的模拟细节。@Roland这也是我的第一个想法。从我所看到的情况来看,我需要在调用
采样时执行此操作,我不确定如何执行此操作。此外,如果我现在仍然能够使用rstans功能,如
traceplot
,这将是最有帮助的。如果它是11GB,最简单的方法就是只购买一点额外的RAM 4 4GB模块,成本大约为100$/€。一天的工作成本可能会更高…我会首先指定
sample_file
参数为
sampling
,以便将结果保存到磁盘以备安全保管(即发生崩溃时)。另外,
thin
参数可能最终是必需的。如果您有足够的RAM一次分析一条链的结果,您可以使用
read\u stan\u csv
功能来进行分析。对于需要所有链的分析,您可能需要按照@Roland的建议编写一些自定义内容。
library(rstan)
library(foreach)
library(doSNOW)

model.c <- stanc(file="3c_model.stan")
model.comp <- stan_model(stanc_ret=model.c) 
cl <- makeCluster(6, type="SOCK")
registerDoSNOW(cl)
num_chains <- 6
parallel_fit <- foreach(i = 1:num_chains,.packages='rstan') %dopar% {
  s <- sampling(model.comp, data=stan.list, chains=1, iter= 1000)
}
fits <- sflist2stanfit(parallel_fit)
stopCluster(cl)
functions { 
  vector evolve(vector pre, real inp, real p1){
     vector[3] out;
     out[1] <- pre[1] + pre[2]/p1;
     out[2] <- pre[2] + pre[3]/p1;
     out[3] <- pre[3]/p1 + inp;
  }
}

data {
  int<lower=1> N ;
  real<lower=0> y[N] ;
  real<lower=0> inp[N] ;
}

parameters { 
  vector<lower=0, upper=5000>[3] init_ss; 
  real<lower=0, upper=60> p1;
}

transformed parameters {      
  vector[3] state[N];
  state[1] <- init_ss;
  for (i in 2:N){
    state[i] <- evolve(state[i-1], inp[i-1] ,p1);
  }
}

model {   
  p1 ~ gamma(1, 10);
  init_ss ~ gamma(1,100);
  for (i in 100:N){
    if (y[i] >0 ) 
      y[i] ~ normal(state[i][1], 1) ;
  }
}