2016-06-02 7 views
2

Ich versuche, meine Daten zu modellieren, in denen die Antwortvariable zwischen 0 und 1 ist, also habe ich mich entschieden, Fractional Response Modell in R zu verwenden. Nach meinem derzeitigen Verständnis ähnelt das Fractional Response Modell logistische Regression, aber es verwendet qausi-Likelihood-Methode, um Parameter zu bestimmen. Ich bin mir nicht sicher, ob ich es richtig verstehe.Fractional Response Regression in R

weit Also, was ich versucht habe, die frm von Paket ist frm und glm auf den folgenden Daten, die die gleichen wie diese OP

library(foreign) 
mydata <- read.dta("k401.dta") 

Ferner ist, folgte ich das Verfahren in diesen OP in denen glm ist benutzt. Doch mit dem gleichen Datensatz mit frm, gibt es verschiedene SE

library(frm) 
y <- mydata$prate 
x <- mydata[,c('mrate', 'age', 'sole', 'totemp1')] 
myfrm <- frm(y, x, linkfrac = 'logit') 

frm kehrt,

*** Fractional logit regression model *** 

      Estimate Std. Error t value Pr(>|t|)  
INTERCEPT 1.074062 0.048902 21.963 0.000 *** 
mrate  0.573443 0.079917 7.175 0.000 *** 
age  0.030895 0.002788 11.082 0.000 *** 
sole  0.363596 0.047595 7.639 0.000 *** 
totemp1 -0.057799 0.011466 -5.041 0.000 *** 

Note: robust standard errors 

Number of observations: 4734 
R-squared: 0.124 

Mit glm, verwende ich

myglm <- glm(prate ~ mrate + totemp1 + age + sole, data = mydata, family = quasibinomial('logit')) 
summary(myglm) 

Call: 
glm(formula = prate ~ mrate + totemp1 + age + sole, family = quasibinomial("logit"), 
    data = mydata) 

Deviance Residuals: 
    Min  1Q Median  3Q  Max 
-3.1214 -0.1979 0.2059 0.4486 0.9146 

Coefficients: 
      Estimate Std. Error t value Pr(>|t|)  
(Intercept) 1.074062 0.047875 22.435 < 2e-16 *** 
mrate  0.573443 0.048642 11.789 < 2e-16 *** 
totemp1  -0.057799 0.011912 -4.852 1.26e-06 *** 
age   0.030895 0.003148 9.814 < 2e-16 *** 
sole   0.363596 0.051233 7.097 1.46e-12 *** 
--- 
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

(Dispersion parameter for quasibinomial family taken to be 0.2913876) 

    Null deviance: 1166.6 on 4733 degrees of freedom 
Residual deviance: 1023.7 on 4729 degrees of freedom 
AIC: NA 

Number of Fisher Scoring iterations: 6 

Welches sollte ich mich verlassen? Ist es besser, glm zu verwenden, anstatt frm da ich die OP gesehen habe, die SE

Antwort

3

Die Unterschiede in den beiden Ansätzen rühren von unterschiedlichen Freiheitsgradkorrekturen bei der Berechnung der robusten Standardfehler her. Mit ähnlichen Standardeinstellungen sind die Ergebnisse identisch. Siehe das folgende Beispiel:

library(foreign) 
library(frm) 
library(sandwich) 
library(lmtest) 

df <- read.dta("http://fmwww.bc.edu/ec-p/data/wooldridge/401k.dta") 
df$prate <- df$prate/100 

y <- df$prate 
x <- df[,c('mrate', 'age', 'sole', 'totemp')] 

myfrm <- frm(y, x, linkfrac = 'logit') 

*** Fractional logit regression model *** 

      Estimate Std. Error t value Pr(>|t|)  
INTERCEPT 0.931699 0.084077 11.081 0.000 *** 
mrate  0.952872 0.137079 6.951 0.000 *** 
age  0.027934 0.004879 5.726 0.000 *** 
sole  0.340332 0.080658 4.219 0.000 *** 
totemp -0.000008 0.000003 -2.701 0.007 *** 

nun die GLM:

myglm <- glm(prate ~ mrate + totemp + age + sole, 
      data = df, family = quasibinomial('logit')) 
coeftest(myglm, vcov.=vcovHC(myglm, type="HC0")) 

z test of coefficients: 

       Estimate Std. Error z value    Pr(>|z|)  
(Intercept) 0.9316994257 0.0840772572 11.0815 < 0.00000000000000022 *** 
mrate  0.9528723652 0.1370808798 6.9512  0.000000000003623 *** 
totemp  -0.0000082352 0.0000030489 -2.7011    0.006912 ** 
age   0.0279338963 0.0048785491 5.7259  0.000000010291017 *** 
sole   0.3403324262 0.0806576852 4.2195  0.000024488075931 *** 
--- 
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

Mit HC0 sind die Standardfehler identisch. Das heißt, frm verwendet HC0 standardmäßig. Eine ausführliche Diskussion finden Sie unter this post. Die Standards, die von sandwich verwendet werden, sind wahrscheinlich in einigen Situationen besser, obwohl ich vermuten würde, dass es im Allgemeinen nicht viel ausmacht. Das sehen Sie bereits an Ihren Ergebnissen: Die Unterschiede sind zahlenmäßig sehr klein.

1

Sie müssen unterschiedlich sein geschätzt könnte die prate Variable von 100. Sie teilen, könnten auch Ihre Version von frm zu aktualisieren.