1

Apache の Commons.Math3 ライブラリと OLSMultipleLinearRegression を使用して、回帰パラメーターを取得したかったのです。回帰は 2 乗の多項式である必要があります。テスト データでは問題なく動作しましたが、この実験データを使用すると、方法は完全に間違った回帰を示します。

public static void poly (){
OLSMultipleLinearRegression quadRegression = new OLSMultipleLinearRegression();

double [] y = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,
               26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,
               51,52,53,54,55,56,57,58,59};

double [][] x = {{1.00,1.00},{1.00,1.00},{1.00,1.00},{1.00,1.00},{1.00,1.00},{1.00,1.00},{1.00,1.00},{1.00,1.00},{1.00,1.00},{0.95,0.90},{0.96,0.91},{0.96,0.92},{0.96,0.92},{0.96,0.92},{0.92,0.84},{0.92,0.85},
{0.92,0.86},{0.93,0.86},{0.93,0.87},{0.89,0.80},{0.90,0.81},{0.90,0.81},{0.90,0.82},{0.89,0.80},{0.90,0.81},{0.90,0.82},{0.91,0.82},{0.91,0.83},{0.90,0.80},{0.90,0.80},{0.90,0.81},{0.91,0.82},
{0.89,0.79},{0.89,0.80},{0.90,0.80},{0.90,0.81},{0.88,0.77},{0.88,0.77},{0.88,0.78},{0.88,0.78},{0.86,0.73},{0.86,0.74},{0.86,0.74},{0.86,0.74},{0.84,0.71},{0.85,0.72},{0.85,0.72},{0.85,0.73},
{0.84,0.71},{0.84,0.71},{0.84,0.71},{0.84,0.71},{0.83,0.69},{0.83,0.69},{0.83,0.69},{0.82,0.68},{0.82,0.68},{0.82,0.68},{0.82,0.68}};

quadRegression.newSampleData(y, x);
quadRegression.setNoIntercept(false);

double [] results = quadRegression.estimateRegressionParameters();}  

この入力データについて、式 y=117.54x²-504.83x+389.088 を取得します。これにより、x=59 の y 値は 379.760.85 になります。入力値をはるかに超えています。そのため、クラスを完全に間違って処理したか、数学的な落とし穴に陥りました。

誰かが私が間違っていた、または誤解していたことを説明していただければ、この問題は私を狂わせます。

4

0 に答える 0