Я пытаюсь подогнать простую модель OLS, используя statsmodels, загружая 2 numpy массивов с именами столбцов. Однако при попытке подобрать модель я получаю эту ошибку:
ValueError: exog is not 1d or 2d
Чтобы сделать пример воспроизводимым, я использовал набор данных sklearn и создал массивы. Мой код таков:
import numpy as np
import pandas as pd
import statsmodels.api as sm
from sklearn import datasets ## imports datasets from scikit-learn
data = datasets.load_boston() ## loads Boston dataset from datasets library
df = pd.DataFrame(data.data, columns=data.feature_names)
Y = pd.DataFrame(data.target, columns=["MEDV"])
Y = Y.to_numpy(dtype=[('MEDV', 'float64')])
X = df.to_numpy(dtype=[('CRIM', 'float64'), ('ZN', 'float64'), ('INDUS', 'float64'), ('CHAS', 'float64'), ('NOX', 'float64'),
('RM', 'float64'), ('AGE', 'float64'), ('DIS', 'float64'), ('RAD', 'float64'), ('TAX', 'float64'),
('PTRATIO', 'float64'), ('B', 'float64'), ('LSTAT', 'float64')])
model = sm.OLS(Y, X).fit()
Это не имеет никакого смысла, поскольку моя переменная Y представляет собой вертикальный вектор чисел, так что это, безусловно, 1D или 2D.
Кто-нибудь понимает, почему я получаю эту ошибку?