Я использую линейные вероятностные модели в R и определил некоторые переменные как факторы, например ::1001
r_js<-factor(birth$r_js)
r_pp<-factor(birth$r_pp)
r_cp<-factor(birth$r_cp)
r_cs<-factor(birth$r_cs)
Однако, когда я запускаю свои модели, R не распознает их как факторы. Вот вывод:
Call:
felm(formula = pc ~ r_cn + r_js + r_pp + r_cp + r_cs | cnty + year, data = birth)
Residuals:
Min 1Q Median 3Q Max
-0.2700 -0.1505 -0.1347 -0.1156 0.9362
Coefficients:
Estimate Std. Error t value Pr(>|t|)
r_cn 0.0020020 0.0017050 1.174 0.240312
r_js -0.0022204 0.0021751 -1.021 0.307345
r_pp 0.0027668 0.0009196 3.009 0.002622 **
r_cp 0.0023981 0.0011860 2.022 0.043164 *
r_cs 0.0058436 0.0016471 3.548 0.000389 ***
Если я выполняю серию вызовов class () для этих переменных, R подтверждает, что они относятся к классу "factor".
Теперь, если я попытаюсь повторить результаты с набором игрушечных данных, я не смогу. Вот игрушечный набор данных с определенными переменными:
demo <- data.frame(expand.grid(country = c("USA","USA","China","China","Sudan","Sudan"),
year = 1994:1996),
democratic = round(runif(9, 0, 20), 0),
UN = rbinom(18,1,0.5))
pzb<-factor(demo$UN)
pzdemo<-demo$democratic
pzyear<-demo$year
А вот результат регрессии:
Call:
lm(formula = pzdemo ~ pzb + pzyear)
Residuals:
Min 1Q Median 3Q Max
-12.091 -1.971 0.169 3.849 5.829
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 1926.7582 3086.6617 0.624 0.542
pzb1 0.7606 2.5916 0.293 0.773
pzyear -0.9601 1.5473 -0.620 0.544
R рассматривает «pzb» как фактор, обозначаемый «1» после «pzb». Сходство между набором игрушечных данных и моим: если я просто определяю переменные в обоих наборах данных без функции factor (), то переменные имеют класс «целое число». Теперь вот в чем разница (и, возможно, именно в этом причина аномалии): когда я определяю переменные в моем наборе данных, они являются «значительными факторами».
Несколько других замечаний: если я сделаю следующее:
birth$r_js<-factor(birth$r_js)
r_js<-birth$r_js
Тогда R правильно рассматривает r_js
как фактор. Точно так же, если я не делаю вышеупомянутого, но в формуле регрессии я использую factor(r_js)
, тогда R обрабатывает эту переменную как фактор.
Буду признателен за любые объяснения того, что происходит и почему простой r_js<-factor(birth$r_js)
здесь не работает.