Как адаптировать регрессионную модель пакета «Оахака», чтобы сделать результаты независимыми от эталонных категорий индикаторных переменных? - PullRequest
0 голосов
/ 01 мая 2019

Я пишу статью о разнице в оплате труда между мужчинами и женщинами в Литве, и моя цель - интерпретировать данные статистического обследования, определяя факторы, частично объясняющие разрыв в заработной плате (например, возраст, срок пребывания, образование и т. Д.), Используя Оахаку Разложение по Блиндеру. Я очень мало знаю о «R», хотя в университете у меня было несколько классов, в основном о линейных регрессионных моделях. Пожалуйста, извините, если мои вопросы не сформулированы правильно. Любые комментарии и советы будут с благодарностью.

Я наткнулся на пакет 'Oaxaca' для 'R', но не смог полностью адаптировать функцию 'формулы' к моим данным. Инструкция пакета: https://cran.r -project.org / веб / пакеты / Оахака / oaxaca.pdf

Моя проблема не в том, чтобы понять, как правильно использовать функцию «формула» для моих данных, которая содержит много нечисловых переменных, которые я пытался превратить в индикаторные («фиктивные») переменные со значениями «0» или "1".

В частности, я не могу изменить формулу, чтобы сделать результат инвариантным для выбранной ссылочной категории. Когда я пытаюсь это сделать, я получаю сообщение об ошибке: «Переменные d1 + d2 + d3 + ... в аргументе« формула »должны указывать членство во взаимоисключающих категориях».

Формула «Оахака», которая более или менее работает для меня, выглядит следующим образом:

1) у ~ х1 + х2 + х3 + ... | г

Здесь y - зависимая переменная, x1 + x2 + x3 + ... являются пояснительными переменные, а z - индикаторная переменная, которая указывает, принадлежит ли наблюдение группе B (женщина) или группе A (мужчина).

Формула скорректирована для справочной категории:

2) у ~ х1 + х2 + х3 + ... | z | d1 + d2 + d3 + ...

Здесь d1 + d2 + d3 + ... являются индикаторными ("фиктивными") переменными, которые будут отрегулировать так, чтобы результаты разложения не менялись в зависимости от выбор пользователем справочной категории (Gardeazabal and Ugidos, 2004).

Я не могу запустить формулу 2), но я могу запустить формулу 1), когда удаляю пару фиктивных переменных, в противном случае я получаю ошибку.

У меня есть 5 уровней (отдельные переменные) для возраста (1–14–19, 2–20–29, 3–30–39 и т. Д.), 4 уровня владения недвижимостью (1–0–2, 1–2 - 2) до 4 лет), 15 уровней для промышленности, 63 уровня для профессии и т. д. Я буду называть возраст, срок службы, отрасль и профессию моими различными «типами», каждый из которых должен иметь свою собственную справочную категорию, опущенную в формуле.

Поскольку я использую много «типов» индикаторных переменных, я не понимаю, как «R» распознает, какая ссылочная категория принадлежит какому «типу»? Может быть, «R» считывает все «фиктивные» переменные как уровни одного и того же «типа» и выбирает только 1 пропущенную переменную в качестве ссылочной категории для всех переменных?

Есть ли какой-нибудь способ, которым вы знаете, как я мог бы адаптировать свои данные, чтобы указать правильную справочную категорию для каждого типа? Судя по примеру с кадром данных «Чикаго», кажется, что у меня слишком много разных «типов» переменных для работы этой формулы.

Исходные данные, которые у меня есть, взяты из обзора структуры доходов Литвы 2014 года. Я создал новые данные в Excel (позже преобразованные в файл .csv) с использованием оригинала, следуя примеру фрейма данных «Чикаго», использованного в пример пакета «Оахака». Созданные данные в основном состоят из фиктивных переменных со значениями «0» или «1», за исключением столбца «Часы», который содержит часы, отработанные в месяце, и столбца log.wage, который содержит натуральный логарифм почасовой оплаты. , Все остальное - индикаторные переменные. Однако эти индикаторные переменные относятся к разным типам, как уже упоминалось, таким как возраст, срок владения и т. Д.

Я безуспешно пытался манипулировать исходным набором данных для создания переменных индикатора, используя 'R', потому что мне нужно создать конкретные новые переменные из множества существующих, например, все объединения, закодированные 431 и 432, должны быть объединеныв 1 переменную под названием «prof43».Пока я не выяснил, как это сделать.

Мои данные в основном содержат переменные-индикаторы, а типы переменных выглядят так:


str(S14)

'data.frame':   44952 obs. of  71 variables:
 $ hours    : int  1 1 1 1 2 1 1 2 1 1 ...
 $ female   : int  0 1 1 1 0 0 0 1 0 0 ...
 $ age0     : int  0 0 0 0 0 0 0 0 0 0 ...
 $ age1     : int  1 1 0 0 0 0 0 1 1 0 ...
 $ age2     : int  0 0 0 1 0 1 0 0 0 0 ...
 $ age3     : int  0 0 1 0 1 0 0 0 0 1 ...
 $ age4     : int  0 0 0 0 0 0 0 0 0 0 ...
 $ age5     : int  0 0 0 0 0 0 1 0 0 0 ...
 $ prof11   : int  0 0 0 0 0 0 0 0 0 0 ...
......
 $ prof96   : int  0 0 0 0 1 0 0 0 0 0 ...
 $ edu1     : int  0 0 0 0 0 0 0 0 1 0 ...
 $ edu2     : int  0 1 0 0 1 1 0 1 0 1 ...
 $ edu3     : int  1 0 1 1 0 0 1 0 0 0 ...
 $ ten1     : int  1 1 1 1 1 1 1 1 1 1 ...
 $ ten2     : int  0 0 0 0 0 0 0 0 0 0 ...
 $ ten3     : int  0 0 0 0 0 0 0 0 0 0 ...
 $ ten4     : int  0 0 0 0 0 0 0 0 0 0 ...
 $ size1to50: int  1 1 0 1 1 1 0 1 1 1 ...
 $ nace1    : int  0 0 0 0 0 0 0 0 0 0 ...
 $ nace2    : int  0 0 0 0 0 0 0 0 0 0 ...
......
 $ nace15   : int  0 0 0 0 0 0 0 0 0 0 ...
 $ pubcon   : int  0 0 0 0 0 0 0 0 0 0 ...
 $ temp     : int  0 0 0 0 0 0 0 0 0 0 ...
 $ log.wage : num  1.79 1.79 1.79 1.79 1.79 ...

Я запускаю функцию 'Oaxaca', используя этикоды:

library(oaxaca)
set.seed(03104)        #random seed

Я получаю результаты от этого, но я сомневаюсь в их обоснованности из-за того, что я удаляю 1 ненулевую переменную индикатора (проф. 62) (в противном случае она не запускается):

results0 <- oaxaca(log.wage ~ hours + pubcon + temp + size1to50 + age0 + age1 + age2 + 
age4 + age5 + ten1 + ten2 + ten4 + edu1 + edu3 + prof11 + prof12 + ..... + 
prof96 + nace1 + nace2 + ... + nace14 | female, data = S14, R = 30)           
# 1) y ~ x1 + x2 + x3 + ... | z

Код, который получает сообщение об ошибке для меня:

results1 <- oaxaca(log.wage ~ hours + pubcon + temp + size1to50 + 
age0 + age1 + age2 + age4 + age5 + ten1 + ten2 + ten4 + edu1 + edu3 + 
prof11 + prof12 + ..... + prof96 + nace1 + nace2 + ... + nace14 | female | 
pubcon + temp + size1to50 + age0 + age1 + age2 + age4 + age5 + ten1 + ten2 + 
ten4 + edu1 + edu3 + prof11 + prof12 + ..... + prof96 + nace1 + nace2 + ... + nace14, 
data = S14, R = 30)        # 2) y ~ x1 + x2 + x3 + ... | z | d1 + d2 + d3 + ...

При выполнении этого я получаю сообщение об ошибке:

Variables d1 + d2 + d3 + ... in argument 'formula' must indicate membership in mutually exclusive categories.

У кого-нибудь есть какие-либо предложения?Считаете ли вы, что использование исходного набора данных и сортировка его по переменным-индикаторам с помощью 'R' будет работать, и я мог бы выбрать справочную категорию, которую распознала бы функция 'формула'?

Если это так, какой пакет и формулы делаютВы предлагаете использовать для адаптации моих данных?

Или вы думаете, что я использую слишком много переменных для этого пакета 'Oaxaca', и я должен ограничить свои данные?

Кроме того, имеют ли смысл результаты, которые я получаю с формулой 1)?Я обеспокоен тем, что «R» не выбирает правильную справочную категорию для каждого «типа» набора переменных, в результате чего все переменные индикатора зависят от некоторой случайной пропущенной переменной, что делает результаты бессмысленными.

Извинитемои продолжительные разговоры, я надеюсь, что у меня был какой-то смысл, и если у кого-то есть опыт работы с пакетом «Оахака» или какие-либо идеи о том, что делать здесь, и хотите озвучить их - я чрезвычайно благодарен заранее!

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