1

私はこの方程式を複製しようとしています:C#でSlope(b)=(NΣXY-(ΣX)(ΣY))/(NΣX2-(ΣX)2)ですが、次の問題が発生しています:

X = 1 + 2 + 3 + 4+5の平均と平均Y=5 + 4 + 3 + 2 + 1を作成すると、明らかにカウントダウンしているにもかかわらず、正の傾きが得られます。この計算機に同じ数値を入れた場合:http ://www.easycalculation.com/statistics/regression.php

同じデータのリンクされた計算機で負の傾きが得られます。私は理由を絞り込もうとしているので、方程式からC#コードへの適切な変換は次のとおりです。

Slope(b)=(NΣXY-(ΣX)(ΣY))/(NΣX2-(ΣX)2)

勾配(m)=((x * avgX * avgY)-(avgX * avgY))/((x * Math.Pow(avgX、2))-Math.Pow(avgX、2));

4

1 に答える 1

4

Avgはそれとは何の関係もありません。ΣはSum(...)を意味します。実際には次のようになります。

var sumX = pts.Sum(pt => pt.X);
var slope = (numberOfPoints * pts.Sum(pt => pt.X * pt.Y) -
             sumX * pts.Sum(pt => pt.Y)) /
            (numberOfPoints * pts.Sum(pt => pt.X * pt.X) -
             sumX * sumX)

ΣXYはSum(x)* Sum(y)を意味するものではありません。しかし、それはSum(x * y)を意味し、それは異なります。

ΣX2はSum(x)^ 2を意味するのではなく、Sum(x ^ 2)を意味します。これも異なります。

ΣXY=Σ(XY)!=ΣX*ΣY

そして、それはあなたの過ちが本当に来たところです。

それと平均対合計の用語を除けば、あなたは答えからそう遠くはありませんでした。

于 2012-06-02T04:38:57.363 に答える