2016-04-20 13 views
1

Ich möchte ein OLS-Modell mit lm() in R ausführen und die Standardfehler im Modell ersetzen. Im folgenden Beispiel würde Ich mag jede Standardfehler ersetzen mit „2“:Ersetzen Sie zugrundeliegende Standardfehler in lm() OLS-Modell in R

set.seed(123) 
x <- rnorm(100) 
y <- rnorm(100) 

mod <- lm(y ~x) 

ses <- c(2,2) 
coef(summary(mod))[,2] <- ses 
sqrt(diag(vcov(mod))) <- ses 

Irgendwelche Gedanken darüber, wie dies zu tun? Vielen Dank.

+1

Ist das wonach Sie suchen? 'mod <- Zusammenfassung (mod); mod ['Koeffizienten'] [[1]] [c (3, 4)] <- 2'? – Gopala

Antwort

1

Diese Zuweisungen werden nicht gelingen. coef, sqrt und vcov werden diese Werte nicht "upstream" übergeben. Sie können dies tun:

> false.summ <- coef(summary(mod)) 
> false.sqrt.vcov <- sqrt(diag(vcov(mod))) 
> false.summ 
       Estimate Std. Error t value Pr(>|t|) 
(Intercept) -0.10280305 0.09755118 -1.0538371 0.2945488 
x   -0.05247161 0.10687862 -0.4909459 0.6245623 
> false.summ[ , 2] <- ses 
> false.sqrt.vcov 
(Intercept)   x 
0.09755118 0.10687862 
> false.sqrt.vcov <- ses 

Sie auch eine Zusammenfassung-Objekt zumindest die coef -Matrix ändern könnte, aber es gibt kein „vcov“ Element zusammenfassend trotz der Tatsache, dass vcov einen Wert zurückgibt.

> summ <- summary(mod) 
> summ$coefficients[ , 2] <- ses 
> coef(summ) 
       Estimate Std. Error t value Pr(>|t|) 
(Intercept) -0.10280305   2 -1.0538371 0.2945488 
x   -0.05247161   2 -0.4909459 0.6245623 

> summ$vcov 
NULL 
> vcov(summ) 
      (Intercept)   x 
(Intercept) 0.009516233 -0.00103271 
x   -0.001032710 0.01142304: 

Wenn Sie eine Zusammenfassung Objekt die Ausgabe von vcov bei der Anwendung ändern wollen Sie das nicht skalierte cov-Matrix verzerren müßten. Dies ist der Code, den vcov für diese Objektklasse verwendet:

> getAnywhere(vcov.summary.lm) 
A single object matching ‘vcov.summary.lm’ was found 
It was found in the following places 
    registered S3 method for vcov from namespace stats 
    namespace:stats 
with value 

function (object, ...) 
object$sigma^2 * object$cov.unscaled 
<bytecode: 0x7fb63c784068> 
<environment: namespace:stats> 
+0

Danke, das ersetzt tatsächlich diese Zahlen, aber ich möchte es im zugrunde liegenden Modell so ersetzen, dass beim Aufruf von 'summary (mod)' die Standardfehler 2 sind. Dies ist so, dass es mit Exportfunktionen wie Stargazer übereinstimmt. –

+0

Ich gab Ihnen viele Informationen und zeigte Ihnen, wie Sie es für die Coef-Matrix innerhalb eines zusammenfassenden Objekts tun können. Sie finden das nicht nützlich? Es gibt keine Funktion 'vcov <-' oder' coef <-', um die destruktive Änderung von Zusammenfassungsobjekten zu unterstützen. –

+0

Danke für diese Erklärung und Code - sehr geschätzt. –

Verwandte Themen