私の質問がかなり抽象的であることを前もってお詫びしますが、これは間接的にプログラミングアルゴリズムに関する質問であり、これについて疑問に思うプログラマーは私だけではないと思います。
これは、Octave での多変数の通常の最小二乗法 (OLS) 回帰アルゴリズムの実装に関するものです (また、MatLab でも同様であると思います)。私が知る限り、2 つの変数を 1 つの測定だけで線形回帰に入力した場合、結果 (つまり、係数) は数学的に決定されないはずです: 黒魔術を有効な前提として受け入れない限り、各変数が最終結果にどのように影響するか? より一般的なケースでは、結果の係数が意味をなすためには、測定値の数が少なくとも変数の数と等しくなければなりません (統計誤差などは言うまでもありません)。
しかし、Octave は喜んで結果を計算し、何の警告もありません。
octave:1> ols([1], [1, 1])
ans =
0.50000
0.50000
言い換えれば、私がこれを正しければ、方程式 1 = x + y が与えられた場合、Octave は喜んで x = y = 0.5 と結論付けます。
そのため、Octave はサタンと直接関係がないと (私としては) 仮定すると、ここに私の質問があります。
- 数学的基礎を誤解していますか? 言い換えれば、これはもしかしたら正当な結果なのだろうか?
- 私が正しければ、なぜ Octave はエラーを吐き出さないのですか? あるいは、少なくとも、私が分析するように頼んでいる完全に馬鹿げたデータに関して、非常に厳しい警告を出さないのですか?