Сюжет lqmm функций - PullRequest
       100

Сюжет lqmm функций

0 голосов
/ 12 ноября 2018

Я изо всех сил пытаюсь найти в Интернете примеры того, как можно легко построить lqmm-модели.Так, например, ниже, я хотел бы простой график, где я могу предсказать несколько квантилей и наложить эти прогнозы на диаграмму рассеяния:

library(lqmm)    
set.seed(123)
M <- 50 
n <- 10 
test <- data.frame(x = runif(n*M,0,1), group = rep(1:M,each=n)) 
test$y <- 10*test$x + rep(rnorm(M, 0, 2), each = n) + rchisq(n*M, 3) 
fit.lqm <- lqm(y ~ x , tau=c(0.1,0.5,0.9),data = test)
fit.lqmm <- lqmm(fixed = y ~ x, random = ~ 1, group = group, data = test, tau = 0.5, nK = 11, type = "normal") 

Я могу сделать это успешно для моделей lqm, но не для моделей lqmm.

plot(y~x,data=test)
for (k in 1:3){
 curve((coef.lqm(fit.lqm)[1,k])+(coef.lqm(fit.lqm)[2,k])*(x), add = TRUE)
}

Я видел функцию предиката lqmm, но он возвращает прогнозируемое значение для каждого значения x в наборе данных, а не гладкую функцию сверх предела оси x.Заранее благодарю за любую помощь.

1 Ответ

0 голосов
/ 13 ноября 2018

Вы получаете только один вектор для coef.lqmm, поэтому вы можете нарисовать линию со значениями:

coef(fit.lqmm)
#(Intercept)           x 
#   3.443475    9.258331 

 plot(y~x,data=test)
 curve( coef(fit.lqmm)[1]  +coef(fit.lqmm)[2]*(x), add = TRUE)

enter image description here

Чтобы получитьквантильный эквивалент нормальных теорий доверительных интервалов, которые необходимо указать в тау-векторах.Это для оценки покрытия 90%:

 fit.lqmm <- lqmm(fixed = y ~ x, random = ~ 1, group = group, data = test, tau = c(0.05, 0.5, 0.95), nK = 11, type = "normal")
 pred.lqmm <- predict(fit.lqmm, level = 1)
 str(pred.lqmm)
 num [1:500, 1:3] 2.01 7.09 3.24 8.05 8.64 ...
 - attr(*, "dimnames")=List of 2
  ..$ : chr [1:500] "1" "2" "3" "4" ...
  ..$ : chr [1:3] "0.05" "0.50" "0.95"
 coef(fit.lqmm)
                  0.05     0.50     0.95
(Intercept)  0.6203104 3.443475 8.192738
x           10.1502027 9.258331 8.620478

plot(y~x,data=test)
for (k in 1:3){
curve((coef.lqmm(fit.lqmm) [1,k])+(coef.lqmm(fit.lqmm) [2,k])*(x), add = TRUE)
}
...