2016-09-02 2 views
-1

Ich habe mehrere Regressionsmodelle, die Breusch-Pagan-Tests nicht bestanden haben, und so habe ich die Varianz mit einer Heteroskedastizitätskorrigierten Kovarianzmatrix wie folgt neu berechnet : coeftest(lm.model,vcov=hccm(lm.model)). coeftest() ist aus dem lmtest Paket, während hccm() aus dem car Paket stammt.F-Score und standardisiertes Beta für heteroskedastizitätskorrigierte Kovarianzmatrix (hccm) in R

Ich möchte F-Scores und standardisierte Betas schaffen, aber ich bin nicht sicher, wie dies zu tun, weil die Ausgabe wie folgt aussieht ...

t test of coefficients: 

       Estimate Std. Error t value Pr(>|t|) 
(Intercept)  0.000261 0.038824 0.01 0.995 
age    0.004410 0.041614 0.11 0.916 
exercise  -0.044727 0.023621 -1.89 0.059 . 
tR    -0.038375 0.037531 -1.02 0.307 
allele1_num  0.013671 0.038017 0.36 0.719 
tR:allele1_num -0.010077 0.038926 -0.26 0.796 
--- 
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

Alle Ratschläge, wie diese zu melden, so sie sind so konsistent wie möglich mit dem Standard summary() und Anova() Ausgabe von R und car, und die Funktion std_beta() aus dem sjmisc Paket?

+0

Vielleicht informieren einen neuen Benutzer _why_ ihre Frage verdient einen Downvote wäre hilfreicher ... – CPR

+0

Ja danke. Ich weiß immer noch nicht, wie das funktioniert, aber manchmal stelle ich Fragen so nah am Protokoll wie möglich und die Antworten erscheinen magisch! – CPR

Antwort

0

Falls jemand diese Frage hat, hier war meine Lösung. Es ist nicht besonders elegant, aber es funktioniert.

Ich habe einfach die Funktion für std_beta als Vorlage verwendet und dann die Eingabe für den Standardfehler in den von der std_beta() abgeleiteten Funktion geändert.

# This is taken from std_beta function from sj_misc package. 
# ===================================== 


b <-coef(lm.model) # Same Estimate 
b <-b[-1] # Same intercept 
fit.data <- as.data.frame(stats::model.matrix(lm.model)) # Same model. 

fit.data <- fit.data[, -1] # Keep intercept 
fit.data <- as.data.frame(sapply(fit.data, function(x) if (is.factor(x)) 
          to_value(x, keep.labels = F) 
          else x)) 

sx <- sapply(fit.data, sd, na.rm = T) 
sy <- sapply(as.data.frame(lm.model$model)[1], sd, na.rm = T) 

beta <- b * sx/sy 
se <-coeftest(lm.model,vcov=hccm(lm.model))[,2] # ** USE HCCM covariance for SE ** 
se <- se[-1] 
beta.se <- se * sx/sy 

data.frame(beta = beta, ci.low = (beta - beta.se * 
      1.96), ci.hi = (beta + beta.se * 1.96)) 

Für die F-Scores habe ich nur die T-Werte quadriert. Ich hoffe, dass dies jemand Zeit spart.

Verwandte Themen