glm
オブジェクトからベクトルとして Z - 統計の値を取得するにはどうすればよいですか? たとえば、私は
fit <- glm(y ~ 0 + x,binomial)
Pr(>|z|)
で係数の推定値を取得するのと同じ方法で列にアクセスするにはどうすればよいfit$coef
ですか?
私は信じている
coef(summary(fit))[,"Pr(>|z|)"]
あなたが望むものを手に入れます。(は、係数テーブルを返すメソッドをsummary.glm()
持つオブジェクトをcoef()
返します。) (ちなみに、アクセサ メソッドが存在する場合は、近似モデルのコンポーネントに直接アクセスするよりも、それらを使用する方が適切です。たとえば、 のcoef(fit)
方が優れていfit$coef
ます。)
p値を引き出し、線形回帰からr二乗すると同様の答えが得られます。
利用可能なアクセサーメソッドを見つけることをお勧めmethods(class="summary.glm")
しますが、実際にはそれよりも少しトリッキーです。これは、デフォルトのメソッド (この場合coef.default()
は ) も関連している可能性があるためです ...
PS Z値がcoef(summary(fit))[,"z value"]
必要な場合は、それを行う必要があります(質問は少しあいまいです。通常、人々が「Z統計」と言うとき、p値ではなく検定統計の値が必要であることを意味します)
することで、必要な情報にアクセスできます
utils::data(anorexia, package="MASS") # Some data
anorex.1 <- glm(Postwt ~ Prewt + Treat + offset(Prewt),
family = gaussian, data = anorexia) # a glm model
summary(anorex.1)
summary(anorex.1)$coefficients[,3] # vector of t-values
(Intercept) Prewt TreatCont TreatFT
3.716770 -3.508689 -2.163761 2.138933
summary(anorex.1)$coefficients[,4] # vector of p-values
(Intercept) Prewt TreatCont TreatFT
0.0004101067 0.0008034250 0.0339993147 0.0360350847
summary(anorex.1)$coefficients[,3:4] # matrix
t value Pr(>|t|)
(Intercept) 3.716770 0.0004101067
Prewt -3.508689 0.0008034250
TreatCont -2.163761 0.0339993147
TreatFT 2.138933 0.0360350847
str
関数は、オブジェクト内の各要素がどこにあるかを示し、[[
アクセサー ( $
@DWin と @Ben Bolker によって指摘されているように、より良い) が情報を抽出します。str(summary(anorex.1))
この関数が何をするか見てみてください。
私は、summary(my_model)[[1]][[2]] のような要約構文を使用します。"[[]]" でさまざまな数字の組み合わせを使用して、必要なデータを抽出することができます。もちろん、私があなたの質問を正しく理解していれば:)