4

Rとパッケージを使用quantregして、データに対して分位点回帰分析を実行しています。

以下のように、summary関数のse(標準誤差)推定量を使用してp値にアクセスできますが、小数点以下5桁しか取得できないため、さらに多くの値が必要です。

model <- rq(outcome ~ predictor)
summary(model, se="ker")

Call: rq(formula = outcome ~ predictor)

tau: [1] 0.5

Coefficients:
            Value    Std. Error t value  Pr(>|t|)
(Intercept) 78.68182  2.89984   27.13312  0.00000
predictor    0.22727  0.03885    5.84943  0.00000

p値の小数点以下の桁数を増やすにはどうすればよいですか?


アップデート

さて、数値結果のマトリックスを含むサブオブジェクトを選択することで、小数点以下の桁数を増やすことができます。

> summary(model, se="ker")[[3]]
                 Value Std. Error   t value     Pr(>|t|)
(Intercept) 78.6818182 3.13897835 25.066059 0.000000e+00
predictor    0.2272727 0.04105681  5.535567 4.397638e-08

ただし、値が1e-12未満の場合、P値は0に丸められます(上記の出力は簡略化されたモデル例です)。@seancarmodyからの提案を適用することで、さらに多くを得ることができます。

format(summary(model, se="ker")[[3]], digits=22)

ただし、P <1e-22の場合でも0に丸められ、「数字」が> 22に設定されている場合は、次のエラーが発生します。

format(summary(model, se="ker")[[3]], digits=23)

prettyNum(.Internal(format(x、trim、digits、nsmall、width、3L、:invalid'digits'引数のエラー

さらに小数点以下の桁数にアクセスすることは可能ですか?

4

2 に答える 2

4

をご覧くださいstr(model)coefficientsサマリーで表示されるよりも高い精度の数値ベクトルを提供する属性があることがわかります。これらをで見ることもできます

format(model$coefficients, digits=12)

これにより、係数が文字列に変換されることに注意してください。

p値をより詳細に調べるには、

summary(model, se="ker")$coefficients[,1]*1e27

1e-27未満のp値の桁に意味があるのか​​どうかは非常に疑わしいですが!

于 2012-08-21T10:13:34.660 に答える
2

さらに先に進むには、p値がどのように計算されるかを掘り下げて確認する必要があると思います。特に、summary.rq次のスニペットがあります。

  coef[, 4] <- if (rdf > 0) 
        2 * (1 - pt(abs(coef[, 3]), rdf))
    else NA

これは実際にはp値のかなり不正確な計算です(通常の状況では実際には問題ではありません)。おそらく、p値の対数を取得することで最大の精度を得ることができます[たとえば、原則として、Rが倍精度として表すことができる最小値である10^{-308}未満のp値を取得できます。精度値]、例:

ss <- summary(model,se="ker")
log(2)+pt(abs(ss$coefficients[,"t value"]),
     lower.tail=FALSE,log.p=TRUE,df=ss$rdf)

引数は、CDFのlower.tail=FALSE補数(アッパーテール)値を示します。log.p=TRUEログ値が必要だと言います。を追加するlog(2)と、両面になります。

于 2012-08-21T16:50:46.157 に答える