2016-04-20 2 views
1

Rのlm()を使用してolsモデルを実行し、モデルの標準エラーを置き換えます。次の例では、各標準エラーを「2」に置き換えます。lm()の基になる標準エラーを置き換えます。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 

どのようにすればいいですか?ありがとう。

+1

これはあなたが探しているものですか? 'mod < - 概要(mod); mod ['coefficients'] [[1]] [c(3,4)] < - 2'? – Gopala

答えて

1

これらの割り当ては成功しません。 coef,sqrtおよびvcovは、これらの値を「上流」に渡すことはありません。

> 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 

あなたはまた、要約、オブジェクト、少なくともcoef - マトリックスを変更することができますが、vcovが値を返さないという事実にもかかわらず、要約には「vcov」要素がありません:あなたはこれを行うことができます。

> 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: 

あなたはスケーリングされていないCOV-マトリックスを歪ませる必要があるだろうサマリーオブジェクトに適用した場合にvcovの出力を変更したい場合。これは、そのオブジェクトクラスのvcovが使用するコードです。

> 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

ありがとう、これは実際にそれらの数値を置き換えますが、 'summary(mod) 'を呼び出すときに標準エラーが2になるように、基礎となるモデルで置き換えたいと思います。これは、stargazerなどの関数をエクスポートするようにするためです。 –

+0

私はあなたに多くの情報を与え、サマリーオブジェクト内のcoef-matrixのためにそれを行う方法を示しました。あなたはそれが有用であるとは思わない?集約オブジェクトの破壊的な変更をサポートする 'vcov < - 'または 'coef < - '関数はありません。 –

+0

この説明とコードをお寄せいただきありがとうございます。 –

関連する問題