我有一个gamlss模型,我想用它来制作新的y预测(和置信区间),以便可视化模型与真实数据的匹配程度。我想根据随机预测值的新数据集(而不是原始数据)进行预测,但我遇到了错误信息。这是一些示例代码:
library(gamlss)
# example data
irr <- c(0,0,0,0,0,0.93,1.4,1.4,2.3,1.5)
lite <- c(0,1,2,2.5)
blck <- 1:8
raw <- data.frame(
css =abs(rnorm(500, mean=0.5, sd=0.1)),
nit =abs(rnorm(500, mean=0.72, sd=0.5)),
irr =sample(irr, 500, replace=TRUE),
lit =sample(lite, 500, replace=TRUE),
block =factor(sample(blck, 500, replace=TRUE))
)
# the model
mod <- gamlss(css~nit + irr + lit + random(block),
sigma.fo=~irr*nit + random(block), data=raw, family=BE)
# new data (predictors) for making css predictions
pred <- data.frame(
nit =abs(rnorm(500, mean=0.72, sd=0.5)),
irr =sample(irr, 500, replace=TRUE),
lit =sample(lite, 500, replace=TRUE),
block =factor(sample(blck, 500, replace=TRUE))
)
# make predictions
predmu <- predict(mod, newdata=pred, what="mu", type="response")
这会出现以下错误:
Error in data[match(names(newdata), names(data))] :
object of type 'closure' is not subsettable
当我在我的真实数据上运行时,它会给出稍微不同的错误:
Error in `[.data.frame`(data, match(names(newdata), names(data))) :
undefined columns selected
当我使用predict
而没有newdata
时,它可以很好地对原始数据进行预测,如:
predmu <- predict(mod, what="mu", type="response")
我使用预测错了吗?任何建议都非常感谢!谢谢。
答案 0 :(得分:1)
文档表明预测的实施不完整。这似乎是功能/功能不完整的一个例子。
答案 1 :(得分:1)
刺猬提到,尚不可能基于新数据进行预测。 因此,BonnieM将模型“移至” lmer()。
我想对此想法做进一步评论:
BonniM尝试根据对象def extract_components(s):
components = {}
for sub in s.split(','):
if 'x' in sub:
prod, count = sub.split('x')
components[prod.strip()] = int(count)
else:
components[sub.strip()] = 1
return components
print(df['items'].apply(extract_components).apply(pd.Series).fillna(0))
abc efg def
0 1 0 0
1 1 2 1
2 2 0 0
3 0 3 7
4 5 0 0
mod
在这种情况下,“进入lme()”可能如下所示:
mod <- gamlss(css~nit + irr + lit + random(block),
sigma.fo=~irr*nit + random(block), data=raw, family=BE)
基于mod2 <- gamlss(css~nit + irr + lit + re(random=~1|block),
sigma.fo=~irr*nit + re(random=~1|block),
data=raw,
family=BE)
的新数据的预测在gamlss2包中实现。
此外,mod2
和mod
应该是相同的模型。
看到:
Stasinopoulos,M.D.,Rigby,R.A.,Heller,G.Z.,Voudouris,V.,&De Bastiani,F.(2017年)。灵活的回归和平滑:在R. Chapman和Hall / CRC中使用GAMLSS。第10.9.1章
最好的问候 凯
答案 2 :(得分:0)
我在这个方向上有很多随机问题,并使用权重参数找到合适的方法,并且一些额外的虚拟观察值设置为权重零(但我感兴趣的预测变量)是一种解决方法。
答案 3 :(得分:0)
通过确保newdata参数的新数据具有运行gamlss模型时使用的EXACT列结构,我能够克服未定义的列选择错误。