Ich versuche, die Koeffizienten mit multivariaten linearen Regression zu berechnen. Ich verwende die statsmodels
Bibliothek, um die Koeffizienten zu berechnen. Das Problem ist, dass ich mit diesem Code den Fehler ValueError: endog and exog matrices are different sizes
bekomme. Ich bekomme diesen Fehler, weil in diesem Beispiel der y
Satz 4 Elemente hat und der X
Satz eine Liste mit 7 ndarrays innerhalb hat, wobei jede Liste 5 Elemente hat.Koeffizienten in einer multivariaten linearen Regression berechnen
Aber was ich nicht verstehe, ist, dass die x
Satz (nicht X
) ist eine Liste mit 4 Listen innen (y
hat 4 Elemente), wobei jede Liste von 7 Variablen zusammengesetzt ist. Für mich haben die x
und y
die gleiche Anzahl von Elementen.
Wie kann ich diesen Fehler beheben?
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()
Ich denke, Sie eine wirklich gute haben Verständnis für dieses Problem. Jede Liste in 'x' (kleines x) hat sieben Elemente, während Ihr' y' ein einzelnes Element in Bezug auf jede Liste in 'x' ist. Am Ende hat 'X' (großes X) eine Form von (7, 5), aber dein' y' (welches eine Liste ist) hat eine Länge von 5. Da eine Regression die gleiche Anzahl an Samples haben muss, versuche es Vorhersage von 5 Elementen (y) für 7 Proben wird nicht funktionieren. Was versuchst du zu machen? Wollen Sie, dass die 7 Elemente in jeder Liste von 'x'' y' vorhersagen? – Jarad