Использование двухступенчатой Метод наименьших квадратов (2SLS) с ivreg
(из пакета AER
) дает отрицательные значения R², поэтому я решил вручную вычислить оценки 2SLS. Они дают те же оценки, что и код ivreg
, но теперь со статистически значимыми результатами. 1009 * 1010 1013 * Я исследую влияние политики организации на данный бюджет. Организация работает хорошо, если остаток бюджета положительный, поэтому у нее меньше затрат, чем предусмотрено в бюджете. Переменная представляет собой процентное значение, положительное или отрицательное. Выбор лечения не является случайным, поскольку организации могут определять свою собственную политику. Кроме того, факторы политики - это в основном фиктивные переменные, 19 переменных - бинарные, 2 - категориальные и 1 - относительные. Мой IV - это любое число от 0 до 1. Вот что я сделал:
1. Я оцениваю простую модель обыкновенных наименьших квадратов, чтобы увидеть, что она будет делать (я знаю, что результаты ничего не значат).
lm1 <- lm(budget ~ policy1, data=df)
lm2 <- lm(budget ~ policy2, data=df)
summ(lm1)
summ(lm2)
2. Затем я выполнил IV с кодом ivreg
, хотя R² стал отрицательным, что мне показалось странным.
ivreg1 <- ivreg(budget ~ policy1| iv, data=df)
ivreg2 <- ivreg(budget ~ policy2 | iv, data=df)
library(stargazer)
stargazer(ivreg1, ivreg2, dep.var.labels=c("Budget"), covariate.labels = c("policy 1", "policy2") , align=TRUE, column.sep.width = "-15pt", font.size = "small", type="text")
3. Так что я сам попробовал выполнить 2SLS пошагово.
Вместо fitted.values(reg1)
я также использовал predict(reg1)
. Это дает тот же результат.
attach(df)
reg1<- lm(policy1~iv)
policy1.hat <- fitted.values(reg1)
reg2 <- lm(policy2~iv)
policy2.hat <- fitted.values(reg2)
ivreg3 <- lm(budget~policy1.hat)
ivreg4 <- lm(budget~policy2.hat)
stargazer(ivreg1, ivreg2, dep.var.labels=c("Budget"), covariate.labels = c("policy 1", "policy2"), align=TRUE, column.sep.width = "-15pt", font.size = "small", type="text")
detach(df)
На этом шаге я получил положительное скорректированное R², но я заметил, что факторы политики теперь значительны и что знак по сравнению с моделью lm
изменился.
Вопрос: Я неправильно вычисляю регрессию IV?
Примеры данных (не реальные числа из-за анонимности данных):
df <- data.frame(
budget = c(4,2.8,9.1,15.5,10.1,12.9,4.3,
-1.9,-4.9,-1.3,14.1,8.6,7.8,-5.8,3.8,7.2,5.2,-5.3,8.6,
3.5,-1.2,-15.7,1.6,6.9,12.6,10.4,4.5,-8.3,-15.3,
9.8,21.5),
iv = c(0.52,0.43,0.41,0.44,0.41,0.4,0.39,
0.43,0.38,0.37,0.34,0.42,0.4,0.36,0.35,0.41,0.39,
0.35,0.31,0.43,0.36,0.51,0.35,0.34,0.37,0.37,0.39,
0.46,0.44,0.36,0.37),
policy1 = c(1L,1L,1L,1L,1L,1L,0L,1L,1L,1L,
1L,1L,1L,1L,1L,1L,1L,1L,1L,1L,1L,1L,1L,1L,1L,
1L,1L,1L,1L,1L,1L),
policy2 = c(1L,1L,1L,1L,1L,1L,1L,0L,0L,1L,
0L,1L,0L,1L,1L,1L,1L,0L,1L,1L,1L,1L,1L,1L,1L,
0L,1L,1L,0L,1L,0L)
)