1. ホーム
  2. r

[解決済み] 線形回帰からp値およびr二乗を取り出す

2022-02-07 01:01:46

質問

単純な線形回帰モデルから、p値(単一の説明変数の係数が0でないことの有意性)とR2乗の値を取り出すにはどうしたらよいでしょうか。例えば...

x = cumsum(c(0, runif(100, -1, +1)))
y = cumsum(c(0, runif(100, -1, +1)))
fit = lm(y ~ x)
summary(fit)

知っている summary(fit) ディスプレイ のように、p値やR2乗の値を他の変数に貼り付けられるようにしたい。

どのように解決するのですか?

r二乗 : 要約オブジェクトから直接 r 二乗値を返すことができます。 summary(fit)$r.squared . 参照 names(summary(fit)) は、直接抽出できるすべての項目のリストです。

モデルのp値。 回帰モデル全体のp値を取得したい場合。 このブログの記事 は、p値を返す関数を概説している。

lmp <- function (modelobject) {
    if (class(modelobject) != "lm") stop("Not an object of class 'lm' ")
    f <- summary(modelobject)$fstatistic
    p <- pf(f[1],f[2],f[3],lower.tail=F)
    attributes(p) <- NULL
    return(p)
}

> lmp(fit)
[1] 1.622665e-05

予測変数が1つの単回帰の場合、モデルのp値と係数のp値は同じになります。

係数のp値。 もし、複数の予測変数がある場合、上記はモデルのp値を返し、係数のp値はそれを使って抽出することができます。

summary(fit)$coefficients[,4]  

あるいは、係数の p 値を anova(fit) オブジェクトを、上記の summary オブジェクトと同様の方法で作成します。