QuantReg из пакета statsmodels в Python дает очень разные результаты, чем в R, используя данные, как показано в следующем коде.
Я пробовал данные STACKLOSS в Python и R соответственно, и результаты были такими же,Интересно, сами данные вызвали какую-то проблему в Python, или, может быть, есть какая-то принципиальная разница в двух реализациях алгоритмов, но я не смог понять это.
Код в Python:
from statsmodels.regression.quantile_regression import QuantReg
y = [0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 662.59, 248.08, 331.25, 182.98, 1085.69, -44.32]
X = [
[1, 20322.18, 0.00, 0], [1, 19653.34, 0.00, 0],
[ 1, 0.00, 72712.41, 0], [1, 0.00, 72407.31, 0],
[1, 0.00, 72407.31, 0], [1, 0.00, 72201.89, 9111],
[1, 183.52, 0.00, 0], [1, 183.52, 0.00, 0],
[1, 0.00, 0.00, 2879], [1, 0.00, 0.00, 2698],
[1, 0.00, 0.00, 0], [1, 0.00, 0.00, 0],
[1, 0.00, 0.00, 19358], [1, 0.00, 0.00, 19001]
]
print(QuantReg(y, X).fit(q=.5).summary())
и в R:
library(quantreg)
y <- c(0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 662.59, 248.08, 331.25, 182.98, 1085.69, -44.32)
X <- matrix(
c(1, 20322.18, 0.00, 0, 1, 19653.34, 0.00, 0,
1, 0.00, 72712.41, 0, 1, 0.00, 72407.31, 0,
1, 0.00, 72407.31, 0, 1, 0.00, 72201.89, 9111,
1, 183.52, 0.00, 0, 1, 183.52, 0.00, 0,
1, 0.00, 0.00, 2879, 1, 0.00, 0.00, 2698,
1, 0.00, 0.00, 0, 1, 0.00, 0.00, 0,
1, 0.00, 0.00, 19358, 1, 0.00, 0.00, 19001),
nrow=14, ncol=4, byrow=TRUE
)
rq(y~.-1, data=data.frame(X), tau=.5, method='fn')
R дает коэффициенты 1,829800e + 02, -9,003955e-03, -2,527093e-03, -5,697678e-05
в то время как Python выдает следующие 3.339e-05, -1.671e-09, -4.635e-10, 7.957e-11
Любой ввод или подсказка приветствуются.