Я запускаю моделирование на основе R с помощью easyABC.
Эти симуляции связаны с несколькими различными программами (dadi, SPLATCHE3 — демографический симулятор) через входной скрипт, все из которых не вызывают ошибок и создают правильные выходные файлы. Он содержит 4 человека для моделирования.
В рамках алгоритма отклонения easyABC я должен установить векторную априорную сводную статистику, чтобы алгоритм проверял свои собственные результаты. В игрушечных моделях я установил 4 сводных статистики, по одной для каждого индивидуума, то есть:
sum_stat_obs = c(8, 8, 6, 4)
Теперь для реальной модели я хочу установить вектор сводной статистики, который намного длиннее (выбранная сводная статистика — это частотный спектр сайта), то есть:
sum_stat_obs = c(0.002,0.0003,0.000566,0.007,0.0002,0.0005,0.0002,0.0005,0.0007,0.0008,0.0009,0.0005,0.0003,0.0005,0.00022,0.00055,0.000099)
Однако, когда я запускаю команду:
abc_sim2 = ABC_rejection(
model = binary_model('~/run_sim4.sh'),
prior = prior, #the model priors
nb_simul = 13000, #number of simulations
summary_stat_target = sum_stat_obs, #summary statistics
tol = 0.5 #how many simulations should be saved
# verbose = T
)
Он запускает моделирование, доходит до конца, сколько я запускал, и выдает ошибку:
Error in abc(summary_stat_target, rejection$param, rejection$stats, tol, :
Number of summary statistics in 'target' has to be the same as in 'sumstat'
Когда я переключил его обратно на 4 sum_stat_obs
, эта ошибка не возникла, поэтому я думаю, что она связана с целевым количеством смоделированных особей. Аргумент target недоступен в приведенной выше команде.
Кроме того, в этой ошибке вызывается пакет abc, даже если он не был вызван в исходной команде. Однако пакеты easyABC и abc можно использовать вместе друг с другом.
Есть ли способ обойти эту ошибку, чтобы я мог иметь более длинный вектор sum_stat_obs
БЕЗ увеличения количества смоделированных особей?