我想从gamlss R函数预测二进制类概率/类标签,如何使用预测函数来获取它们?
我有以下示例代码
library(gamlss)
X1 <- rnorm(500)
X2 <- sample(c("A","C","D","E"),500, replace = TRUE)
Y <- ifelse(X1>0.2& X2=="A",1,0)
n <- 500
training <- sample(1:n, 400)
testing <- (1:n)[-training]
fit <- gamlss(Y[training]~pcat(X2[training],Lp=1)+ri(X1[training],Lp=1),family=BI())
pred <- predict(fit,newdata = data.frame(X1,X2)[testing,],type = "response")
predict.gamlss中的错误(fit,newdata = data.frame(X1,X2)[testing,] ,: 使用选项数据
定义原始数据
有什么想法吗?
答案 0 :(得分:1)
您需要使用data
的{{1}}选项定义原始数据:
gamlss
不幸的是,library(gamlss)
set.seed(1)
n <- 500
X1 <- rnorm(n)
X2 <- sample(c("A","C","D","E"), n, replace = TRUE)
Y <- ifelse(X1>0.2 & X2=="A", 1, 0)
dtset <- data.frame(X1, X2, Y)
training <- sample(1:n, 400)
XYtrain <- dtset[training,]
XYtest <- dtset[-training,]
fit <- gamlss(Y ~ pcat(X2, Lp=1) + ri(X1, Lp=1), family=BI(), data=XYtrain)
pred <- predict(fit, type="response", newdata=XYtest)
现在生成了一条新的错误消息:
if(p!= ap)停止时出错(“惩罚矩阵的维数和 设计矩阵是不兼容的“):参数是长度的 零
修改predict
:
gamlss.ri
函数可以解决此问题
predict.gamlss