我搞不懂我为什么会收到这个错误。我的两个变量都是数值变量,长度都是相同的,当它们不是NAs时,我用NAs来调整数据;但是,我仍然收到一个错误,即响应变量超出了范围。
year <- c(1,2,3,4,5,6,7,8,9,10)
y <- c(19.36, 0, 0, 0.06, 0,0, 1.58, 2.37, 0,0)
x1 <- c(99.735835998,32.73874517,10.8545887,47.96341768,6.29940882,22.55498627,16.64656661,4.234896268,0.571722269,53.45872813)
months = c("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec")
Drivers = c("P","T")
ModelName = paste0(Drivers[1],"_",Drivers[2])
ModelNumb = 2
for (s in 1:length(months))
{
station_summary = data.frame(matrix(NA,length(stations),3))
colnames(station_summary)=c("Station", "ModelName", "ModSelection")
month = months[s]
for (se in 1:length(stations))
{
station = stations[se]
table = read.csv(paste0("D:/BF_Factors/Regroup Drivers/All_Drivers_BF_P_T/",station,"/Table_",station,"_",month,".csv"),sep=",",header = T)
table = subset(table, select=c("Year","BF",Drivers))
table = table[1:50,]
# Clean the data according to the model used. Some years have been excluded because no data where available
table[is.na(table[,2]),3] = NA
table[is.na(table[,2]),4] = NA
table[is.na(table[,3]),2] = NA
table[is.na(table[,3]),4] = NA
table[is.na(table[,4]),2] = NA
table[is.na(table[,4]),3] = NA
if (length(which(table[,2]>0))>=5) # If at least 5 values are higher than 0
{
x1 = table$P #first Driver
x2 = table$T
mod.GA1 <- gamlss(y~x1,sigma.fo=~1,family=GA)
mod.GA2 <- gamlss(y~x1+x2,sigma.fo=~1,family=GA)gamlss中的错误(公式=表$BF~ x1 + x2,族= GA):响应变量超出范围:有50个或更多警告(使用警告()查看前50)
发布于 2019-05-24 11:54:48
问题在于y变量中的0值。如果响应变量中有0,则无法将GAMLSS与Gamma分布相匹配。
注意:您的示例中的代码是不可复制的,所以我无法理解在处理数据之后,您是否仍然在y变量中得到了0。
https://stackoverflow.com/questions/51957993
复制相似问题