Квантильная регрессия и р-значения - PullRequest
2 голосов
/ 03 июня 2011

Я применяю гуантильную регрессию для моего набора данных (используя R). Легко получить хорошее изображение рассеяния с различными квантильными линиями регрессии. (Таус <- с (0,05,0,25,0,75,0,95)). </p>

Проблема возникает, когда я хочу получить значения p (чтобы увидеть статистическую значимость каждой линии регрессии) для каждого из этих квантилей. Для среднего квантиля (тау = 0,5) это не проблематично, но когда речь идет, например, о тау = 0,25, я получаю следующее сообщение об ошибке:

>QRmodel<-rq(y~x,tau=0.25,model=T)
>summary(QRmodel,se="nid")
Error in summary.rq(QRmodel, se = "nid") : tau - h < 0:  error in summary.rq

В чем может быть причина этого?

Также: рекомендуется ли упоминать p-значения и коэффициенты относительно результатов модели квантильной регрессии, или может быть достаточно показать только сюжетную картину и обсудить результаты, основанные на этой картине?

С уважением, разочарованный человек

Ответы [ 2 ]

8 голосов
/ 03 июня 2011

Хороший способ узнать, что происходит в подобных ситуациях отладки, - найти соответствующую часть кода, которая выдает ошибку. Если вы наберете «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.

0 голосов
/ 27 января 2015

Попробуйте summary(QRmodel,se="boot")

Посмотрите на справку и для summary.rq!

...