r - 是否可以使用分位数回归找到预测区间?
问题描述
当尝试运行下面的代码预测时,它给了我一个错误,说区间 arg 应该是无或置信度,所以我想知道是否有办法使用分位数回归来获得预测区间?
注意:如果我用 lm 替换 rq,我可以找到预测区间,但是我想使用 rq 找到它。
#mycode:
library(quantreg)
mydata <- read.csv("C:\\Users\\gokul\\Desktop\\Book4.csv")
attach(mydata)
summary(mydata)
mod = rq(y~q) # y is my dependent and q is my independent variables
summary(mod)
predict(mod, data.frame(q), interval = "prediction",level = 0.10)
CSV 文件片段:
dput(head(mydata,10))
structure(list(y = c(71143L, 68061L, 66603L, 66907L, 69073L,
72901L, 77521L, 81728L, 84842L, 87877L), q = c(71416.79329, 68003.59226,
66533.66142, 66620.44529, 68640.60953, 72945.13676, 77743.82153,
81604.52442, 84887.47483, 87904.33486)), row.names = c(NA, 10L
), class = "data.frame")
解决方案
当然,只需使用 0.05 和 0.95 分位数函数。这将为您提供 90% 的预测限制。如果您想要 95% 的限制,请将 0.05 和 0.95 更改为 0.025 和 0.975。这是一些R代码。
n = 1000
beta0 = 2.1; beta1 = 0.7
set.seed(12345)
X = runif(n, 10, 20)
Y = beta0 + beta1*X + .4*X*rnorm(n)
library(quantreg)
fit.05 = rq(Y ~ X, tau = .05)
fit.95 = rq(Y ~ X, tau = .95)
Lower = fit.05$fitted.values
Upper = fit.95$fitted.values
plot(X,Y, main = "Scatterplot with 90% Prediction Limits")
points(X,Lower, pch=".", col="red")
points(X,Upper, pch=".", col="red")
结果如下:
推荐阅读
- javascript - 表格一次又一次地追加
- java - 将空数组字符串转换为数组
- c++ - 如何解决警告“忽略使用'warn_unused_result'属性声明的函数的返回值”
- sql-server - 过去 3 个月的 SQL 日期
- java - 如何以编程方式在 Selenium 中打开 Safari-> 首选项?
- postgresql - 如何在postgres中增加重复的ID
- ios - iOS 合并仅在先前已完成时才开始新请求
- spring - 使用单个路径变量调用时不支持请求方法“DELETE”
- hadoop - hadoop 在 [ubuntu] ubuntu 上启动名称节点:权限被拒绝(公钥,密码)
- android - React Native:为什么我的项目中有这么多 AndroidManifest.xml 文件?