r - 绘制 lqmm 函数
问题描述
我正在努力在网上找到有关如何轻松绘制 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)
}
我见过 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)
}
推荐阅读
- java - 从不同的应用程序模块导入依赖项时,Spring Boot REST API 不会启动
- javascript - 为什么 ind = index1() 的值不是 || 索引2();其中 index1() = undefined 和 index2() = 0 等于 0 但未定义?
- excel-formula - Excel匹配多个部分值
- xml - 如何使用 PowerShell 更新 XML 元素文本
- angularjs - AngularJs 没有在 Production / Release 上隐藏 html 指令
- android - 从数据库中获取当前地图视图的所有 GPS 坐标
- javascript - 从应用商店或 Play 商店更新时应用崩溃,因为它有旧的本地存储
- python - 从 PyPDF2 getOutlines() 解析页码
- python - 是否可以修改`__init__`中的方法?
- python - QTextEdit:如何使用自定义元数据制作只读文本块?