多変量線形回帰を使用して係数を計算しようとしています。私は係数を計算するためにstatsmodels
ライブラリを使用しています。問題は、このコードではエラーValueError: endog and exog matrices are different sizes
が得られることです。この例では、y
セットには4つの要素があり、X
セットには7つのndarraysのリストがあり、各リストには5つの要素があるため、このエラーが発生します。多変量線形回帰の係数を計算する
しかし、x
セット(X
ではない)は、4つのリスト(y
の4つの要素)を持つリストです。各リストは7つの変数で構成されています。私にとっては、x
とy
は同じ数の要素を持っています。
このエラーを修正するにはどうすればよいですか? x
に各リストを想定し
import numpy as np
import statsmodels.api as sm
def test_linear_regression():
x = [[0.0, 1102249463.0, 44055788.0, 9.0, 2.0, 32000.0, 49222464.0], [0.0, 1102259506.0, 44049537.0, 9.0, 2.0, 32000.0, 49222464.0], [0.0, 1102249463.0, 44055788.0, 9.0, 2.0, 32000.0, 49222464.0], [0.0, 1102259506.0, 44049537.0, 10.0, 2.0, 32000.0, 49222464.0]]
y = [71.7554421425, 37.5205008984, 44.9945571423, 53.5441429615]
reg_m(y, x)
def reg_m(y, x):
ones = np.ones(len(x[0]))
X = sm.add_constant(np.column_stack((x[0], ones)))
y.append(1)
for ele in x[1:]:
X = sm.add_constant(np.column_stack((ele, X)))
results = sm.OLS(y, X).fit()
return results
if __name__ == "__main__":
test_linear_regression()
私はあなたが本当に良いを持っていると思いますこの問題の理解'x'(小x)の各リストは7つの要素を持っていますが、' y'は 'x'の各リストに対して一つの要素です。結局、 'X'(ビッグX)は(7,5)の形をしていますが、' y'(リスト)はlenです。回帰は同じ数のサンプルを持つ必要があるので、 7つのサンプルに対して5つの要素(y)を予測することはできません。あなたは何をしようとしているのですか? 'x'の各リストの7つの要素に' y'を予測させますか? – Jarad