dポイントプレゼントキャンペーン実施中!

R について質問です。単線形回帰分析です。

lm関数を使わずに
線形回帰モデルのYi=β0+β1Xi+eの
β0=yの平均-β1xの平均
β1=SXY/SXX
であることと
abline()を使って
データの散布図と回帰直線を引く操作を教えて下さい。色々試したのですが上手くいかず、苦戦しています。よろしくお願いいたします。

A 回答 (1件)

企業でSQCを推進する立場の者です。



こんな感じでしょうか。
これに信頼区間とか予測区間を加えようとすると、
絶対にlmでやった方が楽ですけど・・・。

rm(list=ls()) # メモリー上の残骸を消す

# 適当に点列を作ってプロットする
# 仮に、β=1.5,y切片=3 とする。

x <- rnorm(0:100,5,2.5)
y <- 3 + 1.5 * x + rnorm(0:100,0,0.5)
xy <- data.frame(cbind(x,y))

plot(xy,pch=16,xlim=c(-5,15),ylim=c(-5,25),las=1)
abline(h=0)
abline(v=0)

xy.c <- scale(xy,,scale=F) # 中心化

# 偏差平方和を求める
# XTXで求めるという、定石を使う

SS <- t(as.matrix(xy.c)) %*% (as.matrix(xy.c))
Sxx <- diag(SS)[1] # XTXの左上部分
Sxy <- SS[lower.tri(SS)] # XTXの左下部分

# 回帰のパラメータを求める

beta1 <- Sxy / Sxx
beta0 <- mean(y) - beta1 * mean(x)

# 回帰線を追加する

abline(beta0,beta1)

# 念のため検算

names(xy) <- c("X","Y")

lm(Y~.,data=xy)
beta0
beta1
    • good
    • 0
この回答へのお礼

大変分かりやすい解説ありがとうございました。まだ勉強中の身でして、lm関数で細かく見ると何が起きているのかを理解する為、やってみたのですが上手くいかず困っておりました。本当にありがとうございます。

お礼日時:2017/06/19 18:37

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!