アプリ版:「スタンプのみでお礼する」機能のリリースについて

統計初心者です。
統計解析ソフトRで単回帰分析をしようと思っています。単回帰分析は繰り返しがある場合です。さらに回帰式の95%信頼限界を求めたいと考えています。昨日、書店を回って成書を見たのですが、上記の説明がされているものを見つけることができませんでした。
テキストファイルからデータの読み込みはできましたし、散布図を作成することもできました。
しかし、n=3のデータをそのままlm(従属変数~独立変数)として計算させると、Coefficientsの値(切片、傾き)が全く異なる値となります。
そこで
1.繰り返しがある場合、普通にlmだけでは解析できないのでしょうか。
また、95%信頼限界については、どのように取り組めばいいのか、検討がつきません。
ご教示の程、よろしくお願いします。

2.さらに、95%信頼限界の求め方を教えていただけないでしょうか。
よろしくお願いします。

A 回答 (3件)

> 95%信頼限界ですが、predict関数をつぎのように書くことで求めることはできますか?


> 回帰式<-lm(従属変数~独立変数)
> 信頼限界<-predict(回帰式)
> また、入力した独立変数の値を入力して、95%信頼限界の値を求めたいのですが、どのようにすればよいでしょうか?

実際に実行してみればわかりますが、それではうまくいきません。
例を下に挙げますので、実際に実行してみてください。


###### ここから #####

(mydata <- data.frame(x = 1:10, y = c(0.5365829, 1.6717796, 3.5224681, 4.6027141, 3.8602299, 5.2651266, 8.6274736, 7.5756941, 11.0286530, 8.1631078))) # テストデータ

with(mydata, plot(y~x)) # 散布図の表示

mydata.lm <- lm(y~x, data = mydata) # 回帰分析
summary(mydata.lm) # 分散分析表
abline(mydata.lm) # 回帰直線の追加

predict(mydata.lm, interval = "confidence") # mydata$xについての95%信頼区間を求める
predict(mydata.lm, newdata = data.frame(x = c(1:9 + 0.5)), interval = "confidence") # data.frame(x = c(1:9 + 0.5))についての95%信頼区間を求める

###### ここまで #####


一つ目のpredictは、newdataの指定がないため、独立変数xの1,2,...10についての予測値がfitに95%信頼区間がlwr, uprに計算されます。
二つ目のpredictは、newdataの指定があるため、newdataのデータフレームの値、つまり1.5, 2.5,...9.5についての予測値がfitに95%信頼区間がlwr, uprに計算されます。

実際には、predictで信頼区間を計算しているのではなく、predict.lmが下請けをしているので、使い方がわからない場合は、
?predict.lm
を実行してヘルプをご覧ください。
    • good
    • 0
この回答へのお礼

詳しい説明ありがとうございました。
なんとか、目的を達成しました。

お礼日時:2009/05/14 20:20

要するにこういうのが書きたいのですか?



conf.limit <- function(x, y, alpha=0.05){
plot(x, y)
n <- length(x)
b <- var(x, y)/var(x)
a <- mean(y)-b*mean(x)
abline(a, b)
sx2 <- var(x)*(n-1) # SSX
R <- max(x)-min(x)
x1 <- seq(min(x)-R*0.1, max(x)+R*0.1, R/20) # x軸の値(=x')
y1 <- a+b*x1
ta <- -qt(alpha/2, n-2) # t.crit
Ve <- (var(y)-var(x, y)^2/var(x))*(n-1)/(n-2) # MSe(=s)
temp <- ta*sqrt(Ve)*sqrt(1/n+(x1-mean(x))^2/sx2) # 信頼区間
y2 <- y1-temp
lines(x1, y2, lty="dotted", col="red")
y2 <- y1+temp
lines(x1, y2, lty="dotted", col="red")
temp <- ta*sqrt(Ve)*sqrt(1+1/n+(x1-mean(x))^2/sx2) # 予測区間
y2 <- y1-temp
lines(x1, y2, lty="dashed", col="blue")
y2 <- y1+temp
lines(x1, y2, lty="dashed", col="blue")
}

# 使い方
> conf.limit(x, y) # これだけ。

ともあれ、実行例を示してもらえばより的確な回答ができるのかもしれませんが^^;
「統計解析ソフトRで単回帰分析(繰り返しあ」の回答画像2

この回答への補足

アドバイスありがとうございます。
現在の私の理解範囲ではグラフを書くところまでは行っていません。将来、グラフ化が必要なときにはまたアドバイスをよろしくお願いします。
さて、今すぐに対応しなくてはいけないのは、独立変数の各数値における95%信頼限界を求めることです。
predict関数を使えばよいことがわかったのですが、その使い方がわかりません。ご教示をよろしくお願いします。
たとえば、
回帰式<-lm(従属変数~独立変数)
信頼限界<-predict(回帰式)
とすることで、95%信頼限界の式を求めることはできるのでしょうか。さらに、上述したように、入力した独立変数の値を入力して、95%信頼限界の値を求めるにはどのようにすればよいのでしょうか。
先日、成書を購入して勉強し始めたばかりで初歩的なことで申し訳ありませんがよろしくお願いします。

補足日時:2009/05/12 11:16
    • good
    • 0

1.繰り返しがある場合でもlmでできますがどうやったのでしょうか?



> n=3のデータをそのままlm(従属変数~独立変数)として計算させると、Coefficientsの値(切片、傾き)が全く異なる値となります。

どう入力してどう異なったのかを補足に記載は可能でしょうか?

2.predictを使用しましょう。

この回答への補足

ご回答ありがとうございます。
よく確認してみますと、独立変数と従属変数を逆に入れていたことに気づきました。変数を入れ替えたところ、期待通りの回帰式ができました。
さて、95%信頼限界ですが、predict関数をつぎのように書くことで求めることはできますか?
回帰式<-lm(従属変数~独立変数)
信頼限界<-predict(回帰式)
また、入力した独立変数の値を入力して、95%信頼限界の値を求めたいのですが、どのようにすればよいでしょうか?

補足日時:2009/05/12 10:57
    • good
    • 0

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