我试图拟合一个GAMLSS模型,其中响应变量y>0,年龄和性别作为自变量。由于我需要对分布的所有4个参数进行建模,因此我使用BCPE作为族。调用显示错误:dBCPE中的错误(y,mu,sigma,nu,tau,log = TRUE):mu必须为正数
请帮帮我
由于所有值均为正值,因此无法确定错误背后的原因。此外,它会自动运行GB 2系列的代码
代码为:
gamdata<-read.csv(file.choose(), header=T)
install.packages("gamlss")
library(gamlss)
age<-gamdata$age
gender<-gamdata$gender
A<-gamdata$A
m1<-gamlss(A~cs(age+gender, df=5),mu.formula=~cs(age+gender,df=5), sigma.formula=~cs(age+gender,df=5), nu.formula=~cs(age+gender,df=5), tau.formula=~cs(age+gender,df=5), family=gamlss.family(BCPE(mu.link="identity", sigma.link="log", nu.link="identity", tau.link="log")))
summary(m1)
发出的错误为:dBCPE中的错误(y,mu,sigma,nu,tau,log = TRUE):mu必须为正数
1条答案
按热度按时间blmhpbnm1#
BCPE具有用于mu的默认身份链路。这可能导致拟合迭代期间的负mu值(特别是如果存在非常接近0的正Y值)。
我推荐使用BCPEo,它有一个默认的mu日志链接。因此,mu永远不会是负数。
如果你有很多正的Y值非常接近0,特别是如果Y的分布是反J形的(即密度从Y=0开始下降),那么你可以尝试GIG或GG分布,或者取log(Y)并为log(Y)找到合适的分布。
你也可以尝试函数chooseDist()来找到一个合适的分布:
chooseDist(,type=“realplus”)for Y
chooseDist(,type=“realline”)for LY=log(Y)