R не признающие факторы в регрессии - PullRequest
0 голосов
/ 28 июня 2018

Я использую линейные вероятностные модели в 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) здесь не работает.

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