#r #glm #poisson #panel-data #manual-testing
#r #glm #poisson #панель-данные #ручное тестирование
Вопрос:
Мне нужно выполнить оценки glm (Пуассона) с фиксированными эффектами (скажем, просто единичным значением FE) и несколькими регрессорами (переменными RHS). У меня есть несбалансированный набор данных панели, где большинство (~ 90%) наблюдений имеют отсутствующие значения (NA) для некоторых, но не для всех регрессоров.
fixest::feglm()
может справиться с этим и возвращает мою подобранную модель. Однако для этого он (и fixest::demean
также) удаляет наблюдения, в которых отсутствует хотя бы один регрессор, перед построением средств с фиксированным эффектом.
В моем случае, я боюсь, это подразумевает не использование значительной доли доступной информации в данных. Поэтому я хотел бы уменьшить свои переменные вручную, чтобы иметь возможность включать как можно больше информации в среднее значение каждого измерения с фиксированным эффектом, а затем запускать feglm для уменьшенных данных. Однако это подразумевает получение отрицательных значений зависимой переменной, что несовместимо с Пуассоном. Если я запускаю feglm с семейством «пуассон» и моими уменьшенными вручную данными, я (последовательно) получаю: «Отрицательные значения зависимой переменной недопустимы для семейства «пуассон».». Та же ошибка возвращается с данными, уменьшенными с помощью fixest::demean
функции.
Вопрос:
Как feglm
обрабатывает отрицательные значения пониженной зависимой переменной? Есть ли способ (например, некоторое преобразование данных) воспроизвести fepois
фиксированный эффект в формуле с fepois
уменьшенными данными и формулой без фиксированного эффекта?
Чтобы использовать пример из fixest::demean
документации (с двусторонними фиксированными эффектами):
data(trade)
base = trade
base$ln_dist = log(base$dist_km)
base$ln_euros = log(base$Euros)
# We center the two variables ln_dist and ln_euros
# on the factors Origin and Destination
X_demean = demean(X = base[, c("ln_dist", "ln_euros")],
fe = base[, c("Origin", "Destination")])
base[, c("ln_dist_dm", "ln_euros_dm")] = X_demean
и я хотел бы воспроизвести
est_fe = fepois(ln_euros ~ ln_dist | Origin Destination, base)
с
est = fepois(ln_euros_dm ~ ln_dist_dm, base)
Ответ №1:
Я думаю, что есть две основные проблемы.
Стратегия моделирования
В общем, важно иметь возможность формально описать оценочную модель. В этом случае было бы невозможно записать модель с помощью одного уравнения, где фиксированные эффекты оцениваются с использованием всех данных и других переменных только по не пропущенным наблюдениям. И если модель не ясна, тогда… возможно, это не очень хорошая модель.
С другой стороны, если ваша модель четко определена, то удаление случайных наблюдений не должно изменять ожидание коэффициентов, только их дисперсию. Итак, опять же, если ваша модель хорошо определена, вам не следует слишком беспокоиться.
Предполагая, что наблюдения с отсутствующими значениями имеют отношение к оценке коэффициентов с фиксированными эффектами (или по-другому, что они используются для понижения некоторых переменных), вы подразумеваете, что эти наблюдения не распределены случайным образом. И теперь вам следует беспокоиться.
Простое использование этих наблюдений для понижения переменных не устранило бы смещения оценочных коэффициентов из-за выбора отсутствия ошибок. Это более глубокая проблема, которая не может быть устранена техническими приемами, а скорее глубоким пониманием данных.
GLM
С GLM произошло недоразумение. GLM — это супер умный трюк для оценки моделей максимального правдоподобия с помощью OLS (здесь есть хорошее описание). Он был разработан и использовался в то время, когда обычные методы оптимизации были очень дорогими с точки зрения вычислительного времени, и это был способ вместо этого использовать хорошо разработанные и быстрые методы OLS для выполнения эквивалентных оценок.
GLM — это итерационный процесс, в котором типичные оценки OLS выполняются на каждом шаге, единственные изменения на каждой итерации касаются весов, связанных с каждым наблюдением. Следовательно, поскольку это обычный процесс OLS, можно использовать методы для выполнения быстрых оценок OLS с несколькими фиксированными эффектами (как в пакете fixest).
Так что на самом деле вы могли бы делать все, что хотите… но только на этапе OLS алгоритма GLM. Ни в коем случае вы не должны унижать данные перед запуском GLM, потому что, ну, это не имеет смысла (теорема FWL здесь абсолютно не применима).
Комментарии:
1. Спасибо за четкое разграничение проблем моделирования и алгоритмики и указание мне на полезный материал по GLM. Действительно, моя мотивация не удалять случайно пропущенные наблюдения в измерении с фиксированным эффектом заключается в уменьшении отклонений коэффициентов. Возможно ли с помощью {fixest} получить доступ к этапу OLS и реализовать другое унижение (такое, которое не удаляет частично отсутствующие наблюдения перед унижением)? Если нет, то это в первую очередь из-за практической или концептуальной проблемы?
2. В программировании возможно все. Но в этом случае возникает большая концептуальная проблема. Это потому, что в GLM вам нужны веса, а шаги OLS зависят от весов (что означает, что вы должны применить взвешенное снижение). И вы не сможете иметь веса для наблюдений с пропущенными значениями. Итак, мне кажется, то, что вы хотите сделать, просто невозможно.