2

次のような方程式のアルファ(a)値を見つけたいとしましょう

y=a+ax1+ax2+...+axi

OLS を使用すると、i=2 の基本的なケースで 10 個の値から開始するとします。

#y=a+ax1+ax2

y = np.arange(1, 10)
x = np.array([[ 5, 10], [10,  5], [ 5, 15],
       [15, 20], [20, 25], [25, 30],[30, 35],
       [35,  5], [ 5, 10], [10, 15]])

statsmodel を使用して、一般的に次のコードを実行して、nx1 x および y 配列のルートを取得します。

import numpy as np
import statsmodels.api as sm

X = sm.add_constant(x)

# least squares fit
model = sm.OLS(y, X)
fit = model.fit()
alpha=fit.params

ただし、x が y と等しくない場合、これは機能しません。OLS がわからない場合は、方程式が最初のページにあります。

4

2 に答える 2

1

トレースバックは何が問題なのかを教えてくれます

    raise ValueError("endog and exog matrices are different sizes")
ValueError: endog and exog matrices are different sizes

x には 10 個の値があり、y には 9 個の値があります。回帰は、両方の観測値が同じ場合にのみ機能します。

endog は y で、exog は x です。これらは、独立変数と説明変数の統計モデルで使用される名前です。

yに置き換えた場合

y = np.arange(1, 11)

その後、すべてが期待どおりに機能します。

于 2014-01-20T15:22:31.643 に答える
0

上記の基本的な問題は次のとおりです。10 個のアイテムを使用していると言いますが、y のベクトルには 9 個しか使用していません。

>>> import numpy
>>> len(numpy.arange(1, 10))
9

これは、Python のスライスと範囲がストップ整数までであるが、ストップ整数を含まないためです。実行した場合:

numpy.arange(10)

0 から始まり 9 で終わる 10 個の項目のリストが作成されます。

回帰では、予測変数のセットごとに予測変数が必要です。それ以外の場合、予測変数は役に立ちません。予測変数を持たない予測子のセットを破棄することもできます。

于 2014-01-20T16:28:37.210 に答える