Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


28664 / 76738 ←次へ | 前へ→

【53368】Re:回帰直線の傾きと切片を求めたい(補足)
回答  りん E-MAIL  - 08/1/6(日) 12:22 -

引用なし
パスワード
   ごじら さん、こんにちわ。

>今度は係数を増やして、重回帰分析もやってみようと思ったのですが、
>問題が出てきました。
>dt配列(?)のインデックスが有効範囲内にないというのです。
>dtはVariant型ということですが、配列として宣言していないので、大きさがよくわかりません。

>With Application.ActiveSheet
> Set ry = Range(Cells(1, 1), Cells(5, 1)) 'Y
> Set rx(1) = Range(Cells(1, 2), Cells(5, 2)) 'X1
> Set rx(2) = Range(Cells(1, 3), Cells(5, 3)) 'X2
>End With
>
>With Application.WorksheetFunction
> dt = .LinEst(ry, rx(1), rx(2))
>End With


こんどは重回帰という事で、もう一度LINESTのヘルプを見ると、

使用例 3  多変数の線形回帰
=LINEST(E2:E12,A2:D12,TRUE,TRUE)

という渡し方になっています。
なので、

Sub test()
  Dim rx As Range, ry As Range
  Dim dt As Variant
  With Application.ActiveSheet
   Set ry = .Range(.Cells(1, 1), .Cells(5, 1)) 'Y: A1:A5
   Set rx = .Range(.Cells(1, 2), .Cells(5, 3)) 'X: B1:C5
  End With
  '渡し方は同じ
  With Application.WorksheetFunction
   dt = .LinEst(ry, rx) '切片を0としない、補正項は考慮しない
  End With

  MsgBox "x1 = " & dt(2) '順番に注意。詳細はLINESTのヘルプを見てね。
  MsgBox "x2 = " & dt(1) '上に同じ。
  MsgBox "切片 = " & dt(3)
  Set rx = Nothing: Set ry = Nothing
  Erase dt
End Sub

こんな感じです。
2 hits

【53349】回帰直線の傾きと切片を求めたい ごじら 08/1/4(金) 23:40 質問
【53350】Re:回帰直線の傾きと切片を求めたい ponpon 08/1/5(土) 0:09 発言
【53356】Re:回帰直線の傾きと切片を求めたい りん 08/1/5(土) 8:33 回答
【53357】Re:回帰直線の傾きと切片を求めたい(補足) りん 08/1/5(土) 9:15 発言
【53360】Re:回帰直線の傾きと切片を求めたい(補足) ごじら 08/1/5(土) 23:33 質問
【53368】Re:回帰直線の傾きと切片を求めたい(補足) りん 08/1/6(日) 12:22 回答
【53374】Re:回帰直線の傾きと切片を求めたい(補足) ごじら 08/1/6(日) 18:43 お礼

28664 / 76738 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free