4

LINEST Excel 関数から情報を取得する必要があります。同様の機能を持つライブラリがあるかどうか、または C# でネイティブの Excel 関数を使用できるかどうかを知りたいです。MVS 2010 で作業し、Windows フォームを使用していることが重要かもしれません。2 因子モデルのみのパラメーターを計算する最小二乗推定関数を作成しましたが、2 因子を超えるモデルのパラメーターを計算する必要があります。

PS実際に私はグーグルで答えを探しましたが、誰かがパッケージ Microsoft.Office.Excel を使用して必要な情報を計算しているのを見ましたが、私のIDEにはそのようなインポートはありません。車輪を発明したくないので、どんな情報でも大歓迎です。ありがとうございました。

更新: 最後に、Microsoft.Office.Excel 参照をプロジェクトに追加し、問題を解決しました。以下にソースコードを添付します。結果は、Excel のような 2D 配列です。コードは急いで書いたのであまり良くなく、修正が必要です。それが他の人に役立つことを願っています。 /w 助けが必要なら私に

        Microsoft.Office.Interop.Excel.Application xl = new Microsoft.Office.Interop.Excel.Application();
        Microsoft.Office.Interop.Excel.WorksheetFunction wsf = xl.WorksheetFunction;

        List<double> x = new List<double> { 107, 109, 110, 113, 120, 122, 123, 128, 136, 140, 145, 150 };
        List<double> y = new List<double> { 102, 105, 108, 110, 115, 117, 119, 125, 132, 130, 141, 144 };

        object result = wsf.LinEst(y.ToArray(), x.ToArray(), true, true);

        Array resArray = (Array)result;

        double[,] linest = new double[5, 2];
        int i = 0, j = 0;
        Console.WriteLine("{0,15:f10}", resArray.Length);
        foreach (var element in resArray)
        {
            if (i == 0 || i == 2 || i == 4 || i == 6 || i == 8)
            {
                linest[j, 0] = (double)element;                    
            }
            else
            {
                linest[j, 1] = (double)element;
                j++;
            }
            i++;                
        }

        Console.WriteLine();
        for (i = 0; i < linest.GetLength(0); i++)
        {
            for (j = 0; j < linest.GetLength(1); j++)
                Console.Write("{0,25:f13}", linest[i, j]);
            Console.WriteLine();
        }
4

1 に答える 1