首页 > 解决方案 > 您可以手动添加参数吗?

问题描述

我想做的是

- 得到 X, Y, X^2, Y^2 和 ( X * Y ) 的总和

- 获取 X、Y 和 ( X * Y ) 的平均值

-获取X的方差和Y的方差

- 获取 X 和 Y 之间的协方差

- 计算 a1 和 a0

直到现在一切都进行得很顺利。我必须通过将每个 X 乘以 a1 来计算每个 X 的预测 Y(ŷ),然后加上 a0(所以 Y = a1x * a0)。所以我缺少的步骤如下:

并使其成为一个功能。我试图让代码更清晰一点,但与非常不清楚的相反,这个不起作用。我只是希望它更容易理解。再次感谢!

Function Coeff_Correl(x As Range, y As Range) As Double

n = 20


'Input x & y Points
For i = 1 To n
x(i) = Cells(1 + i, 2)
y(i) = Cells(1 + i, 1)
Next i

'Créer les sommes
Somme_X = 0
Somme_Y = 0
Somme_X2 = 0
Somme_Y2 = 0
Somme_XY = 0
For i = 1 To n
Somme_X = Somme_X + x(i)
Somme_Y = Somme_Y + y(i)
Somme_X2 = Somme_X2 + x(i) * x(i)
Somme_Y2 = Somme_Y2 + y(i) * y(i)
Somme_XY = Somme_XY + x(i) * y(i)
Next i




'Calculer les moyennes
ym = Somme_Y / n
xm = Somme_X / n
xym = Somme_XY / n




'Calculer les variances et la covariance
variance_X = Somme_X2 / n - xm ^ 2
variance_y = Somme_Y2 / n - ym ^ 2
covariance_xy = xym - xm * ym




'Calculer a1
a1 = covariance_xy / variance_X



'Calculer a0
a0 = ym - (a1 * xm)



'Calculer le SCE et le SCT
sce = 0
sct = 0
For i = 1 To n
sce = sce + ((x(i) * a1 + a0) - ym) ^ 2
sct = sct + (y(i) - ym) ^ 2
Next i

'Calculer R^2

r2 = sce / sct

End Function

标签: excelvba

解决方案


推荐阅读