Можно ли установить seed в пакете elrm?

Я новичок в r и использую пакет elrm для точной логистической регрессии (ELR). Я хотел бы, чтобы можно было воспроизвести мои результаты, поэтому, судя по моим исследованиям, мне нужно заложить основу для симуляции.

Мой набор данных связан с повторными преступлениями, связанными с предыдущими характеристиками, уровнем риска по стандартной оценке и тем, как наша программа влияет на уровень повторных преступлений. Итак, ЛЕЧЕНИЕ — это моя основная независимая интересующая переменная, а уровень рецидивизма (RECID_sum/case_sum) — моя зависимая переменная.

Я пробовал это несколькими разными способами.

Сначала я побежал

set.seed(66672) 

После этого я запускаю приведенный ниже код для ELR:

m.treatment <- elrm(formula = RECID_sum / case_sum ~ TREATMENT + FDRUGVSP +
FPROPVSP + FELEVENTVSP + RISK + street_time + TREATMENT, interest =~ TREATMENT, 
iter=100000, dataset=final, burnIn=100)

И каждый раз я получал разные результаты, даже после того, как обязательно снова установил начальное значение перед запуском кода во второй раз.

Я также пробовал следующее:

m.treatment <- elrm(formula = RECID_sum / case_sum ~ TREATMENT + FDRUGVSP + 
FPROPVSP + FELEVENTVSP + RISK + street_time + TREATMENT, interest =~ TREATMENT, 
iter = 100000, dataset = final, burnIn = 100); set.seed(66672)

но каждый раз получал разные результаты. Я не получил никаких ошибок при запуске этого кода.

Я провел некоторое исследование по установке начальных значений для симуляций Монте-Карло в целом, но этот подход не кажется применимым здесь. Кажется, нет информации об установке начального числа для ELR в пакете elrm. Я могу пропустить это из-за моей относительной неопытности с r, и я могу не знать точно, что я ищу. Обычно я использую SPSS, который настолько неуклюж и, к сожалению, не может сделать ELR разумным образом.

Любая помощь, которую вы можете предложить, очень ценится, и извините меня за новизну, если это простой ответ.


person Kate A.    schedule 15.12.2016    source источник
comment
Используйте правильное форматирование stackoverflow.com/help/how-to-ask.   -  person Anni S    schedule 15.12.2016


Ответы (1)


К сожалению, я так не думаю. Изучение исходного кода C++ показывает, что лежащий в основе код использует системную rand() функцию:

## binomMCMC.cpp, line 31:    
double runif = (float) rand()/RAND_MAX;

Это само по себе немного беспокоит, так как встроенные генераторы случайных чисел R (доступ к которым можно получить из кода C++) обычно считается более надежным и быстрым, чем Unix rand().

Что еще хуже, инициализация RNG кажется жестко закодированной:

## binomMCMC.cpp, line 251
srand((unsigned int)time(NULL));

Я думаю, что ваш единственный вариант здесь - связаться с сопровождающими (maintainer("elrm")) ...

person Ben Bolker    schedule 15.12.2016