|
ごじら さん、こんにちわ。
>今度は係数を増やして、重回帰分析もやってみようと思ったのですが、
>問題が出てきました。
>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
こんな感じです。
|
|