我在R中使用betareg函数来拟合模型,然后必须根据新X预测新Y。 这些是我(从excel中读取的)用于训练模型的数据:
y x1 x2 x3 x4
0,419634945 1,014238952 1,011464532 1,192017359 1,191387415
0,361534322 1,636566118 1,485164213 1,460187325 1,597295162
0,486509921 1,000498651 1,328485546 1,894474004 1,3618722
0,580568633 1,238241644 1,15981677 1,038092521 1,594942532
0,478963289 1,434048004 1,079663345 1,144157369 1,009562412
0,852646616 1,235856992 1,385227035 1,133296831 1,160178886
0,767787659 1,14211818 1,864746836 1,170483824 1,183169424
0,43807267 1,04318058 1,109918772 1,104738116 1,311819983
0,301183957 1,495354353 1,190626472 1,338857694 1,083106967
0,445263455 1,22351354 1,777189298 1,085002195 1,159102384
这是使用的代码:
library(betareg)
library(openxlsx)
input_data<- read.xlsx("dati.xlsx")
Y <- input_data[,1]
X <- input_data[,2:ncol(input_data)]
beta_reg_fit <- betareg(formula = Y ~ data.matrix(X), link = "logit", link.phi = NULL, model = TRUE, y = TRUE, x = FALSE)
new_data <- data.frame(cbind(1.1, 1.2, 1.4, 1.3))
predictions <- predict(beta_reg_fit, new_data)
变量new_data
代表我的新观察结果...但是在使用预测时,我得到以下警告消息
Warning message:
'newdata' had 1 row but variables found have 10 rows
有人可以帮助我吗?我找不到预测函数的正确用法。我需要在某个日期训练我的模型,并在给定的一组独立变量上预测(仅一个)独立变量
答案 0 :(得分:2)
当您使用betareg
函数对模型进行拟合,然后使用预测进行预测时,预测会尝试在newdata上找到相同的名称(不是new_data
变量,而是newdata预测函数的参数)。在您的第一种情况下,名称new_data
与X
发生冲突,因此您会收到警告。
要解决您的问题,应改为运行此:
library(betareg)
library(openxlsx)
input_data<- read.xlsx("dati.xlsx")
Y <- input_data[,1]
X <- input_data[,2:ncol(input_data)]
beta_reg_fit <- betareg(formula = Y ~ data.matrix(X), link = "logit", link.phi = NULL, model = TRUE, y = TRUE, x = FALSE)
X <- data.frame(cbind(1.1, 1.2, 1.4, 1.3))
predictions <- predict(beta_reg_fit, X)