我所拥有的是excel A列中给出的1000多个数字数据。我必须取50(A1:A50)和另外50个数据(A51:A100),将它们粘贴到B和C列并从最低到最高排序. 之后,我必须对它们进行线性回归并找到 Rsquare 和回归公式。在找到 r 平方和公式后,我必须将它们保存在某个地方以进行下一步,该步骤是相同的,但这次是 A2:A51 和 A52:A101。
我必须循环执行此操作并存储结果。
我所拥有的是excel A列中给出的1000多个数字数据。我必须取50(A1:A50)和另外50个数据(A51:A100),将它们粘贴到B和C列并从最低到最高排序. 之后,我必须对它们进行线性回归并找到 Rsquare 和回归公式。在找到 r 平方和公式后,我必须将它们保存在某个地方以进行下一步,该步骤是相同的,但这次是 A2:A51 和 A52:A101。
我必须循环执行此操作并存储结果。
这会让你继续前进。
Public Sub RegressionAnalysis()
Dim sample_count As Integer
sample_count = 50
Dim r As Range
Set r = Range("A2") ' First row of data
Dim i As Integer, N As Integer, j As Integer
N = Range(r, r.End(xlDown)).Rows.Count ' Count rows
Dim rx As Range, ry As Range
i = 0: j = 0 ' data counter, output counter
Dim slope As Double, yint As Double
Do While i + 2 * sample_count < N
' Current block of data
Set rx = r.Offset(i, 0).Resize(sample_count, 1)
' Next block of data
Set ry = rx.Offset(sample_count, 0).Resize(sample_count, 1)
' Use built-in function for regression slope & intercept
slope = WorksheetFunction.slope(rx, ry)
yint = WorksheetFunction.Intercept(rx, ry)
' Output values to adjacent columns
r.Offset(j, 1).Value = slope
r.Offset(j, 2).Value = yint
' Increment the counters
i = i + sample_count
j = j + 1
Loop
End Sub
结果: