私は多くの回帰を実行しており、1つの特定の変数の係数とp値への影響のみに関心があります。したがって、スクリプトでは、glmサマリーからp値を抽出できるようにしたいだけです(係数自体を取得するのは簡単です)。 p値を表示する唯一の方法は、summary(myReg)を使用することです。他の方法はありますか?
例えば。:
fit <- glm(y ~ x1 + x2, myData)
x1Coeff <- fit$coefficients[2] # only returns coefficient, of course
x1pValue <- ???
fit$coefficients
は行列ですが、それでも単純にp値を抽出することはできません。
これを行うことは可能ですか?
ありがとう!
あなたが欲しい
_coef(summary(fit))[,4]
_
summary(fit)
で示される表形式の出力からp値の列ベクトルを抽出します。 p-valuesは、モデルの適合でsummary()
を実行するまで実際には計算されません。
ところで、次のことができる場合は、オブジェクトを掘り下げるのではなく、抽出関数を使用します。
_fit$coefficients[2]
_
あるべき
_coef(fit)[2]
_
抽出関数がない場合は、str()
が友達です。オブジェクトの構造を見ることができます。これにより、オブジェクトの内容と抽出方法を確認できます。
_summ <- summary(fit)
> str(summ, max = 1)
List of 17
$ call : language glm(formula = counts ~ outcome + treatment, family = poisson())
$ terms :Classes 'terms', 'formula' length 3 counts ~ outcome + treatment
.. ..- attr(*, "variables")= language list(counts, outcome, treatment)
.. ..- attr(*, "factors")= int [1:3, 1:2] 0 1 0 0 0 1
.. .. ..- attr(*, "dimnames")=List of 2
.. ..- attr(*, "term.labels")= chr [1:2] "outcome" "treatment"
.. ..- attr(*, "order")= int [1:2] 1 1
.. ..- attr(*, "intercept")= int 1
.. ..- attr(*, "response")= int 1
.. ..- attr(*, ".Environment")=<environment: R_GlobalEnv>
.. ..- attr(*, "predvars")= language list(counts, outcome, treatment)
.. ..- attr(*, "dataClasses")= Named chr [1:3] "numeric" "factor" "factor"
.. .. ..- attr(*, "names")= chr [1:3] "counts" "outcome" "treatment"
$ family :List of 12
..- attr(*, "class")= chr "family"
$ deviance : num 5.13
$ aic : num 56.8
$ contrasts :List of 2
$ df.residual : int 4
$ null.deviance : num 10.6
$ df.null : int 8
$ iter : int 4
$ deviance.resid: Named num [1:9] -0.671 0.963 -0.17 -0.22 -0.956 ...
..- attr(*, "names")= chr [1:9] "1" "2" "3" "4" ...
$ coefficients : num [1:5, 1:4] 3.04 -4.54e-01 -2.93e-01 1.34e-15 1.42e-15 ...
..- attr(*, "dimnames")=List of 2
$ aliased : Named logi [1:5] FALSE FALSE FALSE FALSE FALSE
..- attr(*, "names")= chr [1:5] "(Intercept)" "outcome2" "outcome3" "treatment2" ...
$ dispersion : num 1
$ df : int [1:3] 5 4 5
$ cov.unscaled : num [1:5, 1:5] 0.0292 -0.0159 -0.0159 -0.02 -0.02 ...
..- attr(*, "dimnames")=List of 2
$ cov.scaled : num [1:5, 1:5] 0.0292 -0.0159 -0.0159 -0.02 -0.02 ...
..- attr(*, "dimnames")=List of 2
- attr(*, "class")= chr "summary.glm"
_
したがって、coef()
を使用して抽出できるcoefficients
コンポーネントに注意しますが、他のコンポーネントには_null.deviance
_などの抽出器がありません。これは_summ$null.deviance
_として抽出できます。
番号の代わりに、名前を直接入力できます
_coef(summary(fit))[,'Pr(>|z|)']
_
係数の要約から入手できる他のもの:
Estimate Std. Error z value Pr(>|z|)
さて、これは別の方法ですが、最も効率的な方法ではありません:
a = coeftable(model).cols[4]
pVals = [ a[i].v for i in 1:length(a) ]
これにより、glmから抽出された値がStatsBaseにないことが保証されます。ここで、要件に応じてpValsをいじることができます。それが役に立てば幸い、Ebby