R 绘图lqmm函数
我正在努力在网上找到lqmm模型如何容易绘制的例子。例如,下面,我想要一个简单的图,我可以预测多个分位数,并将这些预测叠加到散点图上:R 绘图lqmm函数,r,plot,quantreg,quantile-regression,R,Plot,Quantreg,Quantile Regression,我正在努力在网上找到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) + r
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")
我见过predict.lqmm函数,但它返回数据集中每个x值的预测值,而不是x轴极限上的平滑函数。提前感谢您的帮助。对于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)
要获得正态理论置信区间的分位数等价值,需要提供tau向量。这是针对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)
}
fit.lqmm对于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)
要获得正态理论置信区间的分位数等价值,需要提供tau向量。这是针对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)
}
fit.lqmm大多数predict
函数支持一个newdata
参数,该参数允许您在值范围内提供一个seq
()影响。这可能就是curve
函数所做的。但是,predict.lqmm
要求您指定一个级别值,以确定是否考虑随机效应估计值。您应该阅读该软件包中的predict
-方法的帮助页面。大多数predict
函数都支持newdata
参数,该参数允许您在值范围内提供seq
()-影响。这可能就是curve
函数所做的。但是,predict.lqmm
要求您指定一个级别值,以确定是否考虑随机效应估计值。您应该阅读该软件包中的predict
-方法的帮助页面。非常感谢您的评论和回答,它们非常有见解。遗憾的是,绘制多个分位数没有明显的解决方案。我可能不得不用置信区间来探索这种方法。我将阅读更多关于predict的帮助页面。再次感谢。在我阅读帮助页面时,您需要使用predict,lqmm
中的level=1
来获得包含随机效应的估计值。如果在对lqmm的调用中包含tau的值,则会得到多个边际分位数估计。这些似乎是“置信区间”的qr方法学等价物。是的,现在可以了,谢谢!我不确定我昨天在这方面哪里出了问题,因为我想我试过类似的东西。非常感谢你的帮助!非常感谢您的评论和回答,他们非常有洞察力。遗憾的是,绘制多个分位数没有明显的解决方案。我可能不得不用置信区间来探索这种方法。我将阅读更多关于predict的帮助页面。再次感谢。在我阅读帮助页面时,您需要使用predict,lqmm
中的level=1
来获得包含随机效应的估计值。如果在对lqmm的调用中包含tau的值,则会得到多个边际分位数估计。这些似乎是“置信区间”的qr方法学等价物。是的,现在可以了,谢谢!我不确定我昨天在这方面哪里出了问题,因为我想我试过类似的东西。非常感谢你的帮助!