Хороший способ узнать, что происходит в подобных ситуациях отладки, - найти соответствующую часть кода, которая выдает ошибку. Если вы наберете «summary.rq» в консоли, вы увидите код для функции summary.rq. Просматривая его, вы найдете раздел, где он вычисляет se с помощью метода "nid", начиная с этого кода:
else if (se == "nid") {
h <- bandwidth.rq(tau, n, hs = hs)
if (tau + h > 1)
stop("tau + h > 1: error in summary.rq")
if (tau - h < 0)
stop("tau - h < 0: error in summary.rq")
bhi <- rq.fit.fnb(x, y, tau = tau + h)$coef
blo <- rq.fit.fnb(x, y, tau = tau - h)$coef
Итак, что здесь происходит, так это то, что для того, чтобы вычислить se, функция сначала должна рассчитать ширину полосы, h, а модель Quantreg - это refit для tau +/- h. Для тау около 0 или 1 есть вероятность, что добавление или вычитание полосы пропускания 'h' приведет к тау ниже 0 или больше 1, что не очень хорошо, поэтому функция останавливается.
У вас есть несколько вариантов:
1.) Попробуйте другой метод se (начальная загрузка?)
2.) Измените код summary.rq самостоятельно, чтобы заставить его использовать max (tau, 0) или min (tau, 1) в тех случаях, когда полоса пропускания выталкивает тау за пределы. (Могут быть серьезные теоретические причины, по которым это плохая идея; не рекомендуется, если вы не знаете, что делаете.)
3.) Вы можете попытаться прочитать теорию, лежащую в основе расчета этих значений, чтобы у вас было лучшее представление о том, когда они могут работать хорошо или нет. Это может пролить некоторый свет на то, почему вы сталкиваетесь с ошибками со значениями тау около 0 или 1.