Установите допуск для функции PLM для вычисления анализа панели случайных эффектов в R - PullRequest
0 голосов
/ 02 октября 2018

Я работаю над анализом сравнительно большой панели с 18 годами и 88 лицами, использующими пакет plm в R.
Среди других анализов я хотел бы рассчитать оценку случайного эффектамодель, но я получил эту ошибку:

 Error in solve.default(crossprod(ZBeta)) : 
 system is computationally singular: reciprocal condition number = 3.27049e-18

Теперь я понимаю, что это связано с тем, что в вычислительном отношении R рассматривает очень маленькие числа как ноль.Это делает невозможным вычисление обратной матрицы ковариации.В других пакетах и ​​функциях можно установить значение допуска, которое не позволяет R приблизить определенный порядок величины к нулю.Например, в моем случае я мог бы указать tol=1e-19, чтобы решить мою проблему, но, очевидно, plm не принимает опцию tol.

Может кто-нибудь предложить любую другую команду, чтобы установить больший допуск для этогопакет?

traceback()
6: solve.default(crossprod(ZBeta))
5: solve(crossprod(ZBeta))
4: ercomp.formula(formula, data, effect, method = random.method, 
       models = random.models, dfcor = random.dfcor)
3: ercomp(formula, data, effect, method = random.method, models = random.models, 
       dfcor = random.dfcor)
2: plm.fit(formula, data, model, effect, random.method, random.models, 
       random.dfcor, inst.method)
1: plm(log(tot_events + 1) ~ var_log, data = pdata_ctrls_num, model = "random", 
       na.action = na.omit)

РЕДАКТИРОВАТЬ :

Я наконец обошел проблему, изменив random.method со значения по умолчанию "swar" на "walhus".

Возможно, другой возможностью было бы настроить параметр restrict.matrix таким образом, чтобы избежать таких малых количеств, но я не уверен в этом.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...