如何使用GAM仅对25%的响应变量数据进行建模

时间:2013-08-14 02:35:04

标签: r

我想将下面的模型设置为仅考虑响应变量“Pres”的高25%,而不是整个数据集。我想xmin和xmax线需要改变吗?

aa2<-gam(Pres~s(Mud,bs="ps", k=15),family=Gamma(link=log),data=Antho)
xmin <- ceiling(min(Antho$Mud[Antho$Bin==1]))
xmax <- floor(max(Antho$Mud[Antho$Bin==1]))
Mudnew <- seq(from=xmin, to=xmax, by=0.1)
pred.dat <- data.frame(Mudnew)
names(pred.dat) <- "Mud"
pred.aa2 <- data.frame(predict.gam(aa2, pred.dat, se.fit=TRUE, type="response"))
pred.aa2.comb <- data.frame(pred.dat, pred.aa2)
names(pred.aa2.comb)
plot(fit ~ Mud, data=pred.aa2.comb, type="l", lwd=2, col=1, ylab="Density per 0.0132 m2", xlab="Mud content (%)")

感谢您的帮助

-

谢谢,但是我想做后者,那就是“明确的上四分位数”的模型......这是合情合理的吗?我正在使用mgcv fyi。

1 个答案:

答案 0 :(得分:1)

取决于你的意思只有高25%?您是否希望在响应的四分位数中期望数据,或者您是否希望明确地对上四分位进行建模?

前者的一个选择是仅采取上限25%

take <- with(Antho, Pres >= quantile(Pres, probs = 0.75)
Antho2 <- Antho[take, ]

然后使用Antho2进行建模。

您可能更喜欢的另一种方法是通过 quantreg 包中的rqss()函数明确地对该分位数进行建模。我不认为它具有 mgcv 所做的相同范围的样条选项(假设您正在使用mgcv::gam()?),但它的功能很好。

另一种选择是使用 gamlss 包和附加组件,尽管我的知识或套件包含较少。