У меня есть матрица данных X
, которую я подгоняю к линейной модели, в частности ransac = linear_model.RANSACRegressor()
.
Я нахожу коэффициенты: coef = ransac.estimator_.coef_
Теперь,Я пытаюсь найти доверительный интервал для моих прогнозов, поэтому мне нужно вычислить:
Однако это значение всегда должно быть положительным после расчета:
c = np.ones(X.shape[2]) # a vector of ones
XTX = np.matmul(np.transpose(np.matrix(X)), np.matrix(X))
# find the bit inside square root
np.matmul( np.matmul(np.transpose(c),np.linalg.inv(XTX) ) , c.reshape((c.shape[0],1)) )
Однако это отрицательное значение, которое даже не должно быть возможным ... Как обойти эту проблему?
Пошаговая разбивка:
c = X[0]
c = np.reshape(c , (c.shape[0],1))
ct = np.reshape(c , (1, c.shape[0]))
XTX = np.matmul(np.transpose(np.matrix(X)), np.matrix(X))
XTXinv = np.linalg.inv(XTX)
XTXinvc = np.matmul(XTXinv, c)
ctXTXinvc = np.matmul(ct, XTXinvc)
# ctXTXinvc is negative