薬物利用を調査する時系列データの回帰モデルがあります。目的は、時系列にスプラインを当てはめ、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
a2
のPr(>|t|)
値を使用して、調査中のデータが自己相関しているかどうかをテストしています。
Pr(>|t|)
のこの値(このモデル0.33329)を抽出し、それをスカラーに保存して論理テストを実行することは可能ですか?
または、別の方法で解決できますか?
summary.lm
オブジェクトは、これらの値を'coefficients'
と呼ばれるmatrix
に保存します。したがって、あなたが求めている値には次の方法でアクセスできます。
a2Pval <- summary(mg)$coefficients[2, 4]
または、より一般的/読みやすい、coef(summary(mg))["a2","Pr(>|t|)"]
。この方法が推奨される理由については、 here を参照してください。
パッケージ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
回帰モデルを次の関数に渡すだけです。
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)
質問に答えるには、モデルを変数として保存し、環境ウィンドウでクリックして、モデルの出力の内容を調べることができます。その後、クリックして、内容と保存場所を確認できます。
もう1つの方法は、yourmodelname$
と入力し、モデルのコンポーネントを1つずつ選択して、それぞれに含まれる内容を確認することです。 yourmodelname$coefficients
に到達すると、希望するベータ値、p値、およびt値がすべて表示されます。