对于逻辑回归,我想测试Y的自变量和对数概率之间的线性空间关系的假设。
我已经阅读了有关使用 Box-Tidwell 测试的信息。应用测试会导致错误,因此我希望能够对代码做出一些帮助。
我的数据集包含大约80个变量。我的依赖变量是一个二分变量。我的自变量由连续变量和因子组成。
第一个问题我在box-tidwell中使用 Y 。
我通过在所有预测变量上运行glm(family = binomial)指定Y并获取log-odds:
odds = ...$fitted.values / (1-...$fitted.values)
log_odds <- log(odds)
这意味着我用于box-tidwell的Y基于没有x ln(x)交互的模型。我想知道这是不是正确的方法。 我想不出另一种在Box_Tidwell中指定模型的方法。 我应该在Box_Tidwell测试中定义glm,如果是,我应该怎么做(即我应该使用哪个代码)?
第二个问题我关注X1 zh X2的规范。 我通过在所有连续预测变量中添加一个分数(0.01)来指定BT中的x1(因为BT不能处理零),因此首先选择所有连续预测变量。 由于我读到X1和X2应该是矩阵,我做了以下几点:
DF_numeric <- Filter(is.numeric, DF)
x <- DF_numeric + 0.01
x_matrix <- as.matrix (x)
据我所知,X2应该包含模型中不适合转换的变量,所以:
x2 <- Filter(is.factor, DF)
x2_matrix <- as.matrix (x2)
运行我的BT时出现以下错误:
BT <- boxTidwell(Y=log_odds, x1=x_matrix, x2=x2_matrix)
Error in `[[<-.data.frame`(`*tmp*`, i, value = c(250L, 250L, 194L, 250L, :
replacement has 480090 rows, data has 6155
480090行是6155个参与者乘以变量的数量,但我不知道我犯了哪个错误。
我尝试了不同的可能性。由于我用于Y的log_odds与X1 en X2不在同一个数据帧中,我尝试绑定(使用cbind)x1,x2和log_odds。但是,这不会改变错误。
我应该为Y,X还是X2使用不同的格式?
我希望我已经提供了足够的信息,希望你能帮助我!
(我首先在Cross Validated中问过这个问题,但由于那里的主题不合适,我希望这是正确的地方。)
提前致谢! 西蒙