web-dev-qa-db-ja.com

回帰係数値を抽出する

薬物利用を調査する時系列データの回帰モデルがあります。目的は、時系列にスプラインを当てはめ、95%CIなどを計算することです。モデルは次のようになります。

id <- ts(1:length(drug$Date))
a1 <- ts(drug$Rate)
a2 <- lag(a1-1)
tg <- ts.union(a1,id,a2)
mg <-lm (a1~a2+bs(id,df=df1),data=tg) 

mgの要約出力は次のとおりです。

Call:
lm(formula = a1 ~ a2 + bs(id, df = df1), data = tg)

Residuals:
     Min       1Q   Median       3Q      Max 
-0.31617 -0.11711 -0.02897  0.12330  0.40442 

Coefficients:
                  Estimate Std. Error t value Pr(>|t|)    
(Intercept)        0.77443    0.09011   8.594 1.10e-11 ***
a2                 0.13270    0.13593   0.976  0.33329    
bs(id, df = df1)1 -0.16349    0.23431  -0.698  0.48832    
bs(id, df = df1)2  0.63013    0.19362   3.254  0.00196 ** 
bs(id, df = df1)3  0.33859    0.14399   2.351  0.02238 *  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 

a2Pr(>|t|)値を使用して、調査中のデータが自己相関しているかどうかをテストしています。

Pr(>|t|)のこの値(このモデル0.33329)を抽出し、それをスカラーに保存して論理テストを実行することは可能ですか?

または、別の方法で解決できますか?

61
John

summary.lmオブジェクトは、これらの値を'coefficients'と呼ばれるmatrixに保存します。したがって、あなたが求めている値には次の方法でアクセスできます。

a2Pval <- summary(mg)$coefficients[2, 4]

または、より一般的/読みやすい、coef(summary(mg))["a2","Pr(>|t|)"]。この方法が推奨される理由については、 here を参照してください。

67
wkmor1

パッケージbroomはここで便利です(「整頓された」形式を使用します)。

tidy(mg)は、係数、t統計などを含む適切にフォーマットされたdata.frameを提供します。他のモデル(plmなど)でも機能します。

broomのgithubリポジトリからの例:

lmfit <- lm(mpg ~ wt, mtcars)
require(broom)    
tidy(lmfit)

      term estimate std.error statistic   p.value
1 (Intercept)   37.285   1.8776    19.858 8.242e-19
2          wt   -5.344   0.5591    -9.559 1.294e-10

is.data.frame(tidy(lmfit))
[1] TRUE
26
Helix123

回帰モデルを次の関数に渡すだけです。

    plot_coeffs <- function(mlr_model) {
      coeffs <- coefficients(mlr_model)
      mp <- barplot(coeffs, col="#3F97D0", xaxt='n', main="Regression Coefficients")
      lablist <- names(coeffs)
      text(mp, par("usr")[3], labels = lablist, srt = 45, adj = c(1.1,1.1), xpd = TRUE, cex=0.6)
    }

次のように使用します。

model <- lm(Petal.Width ~ ., data = iris)

plot_coeffs(model)

enter image description here

1
Cybernetic

質問に答えるには、モデルを変数として保存し、環境ウィンドウでクリックして、モデルの出力の内容を調べることができます。その後、クリックして、内容と保存場所を確認できます。

もう1つの方法は、yourmodelname$と入力し、モデルのコンポーネントを1つずつ選択して、それぞれに含まれる内容を確認することです。 yourmodelname$coefficientsに到達すると、希望するベータ値、p値、およびt値がすべて表示されます。

1