如何在R中使用Box-Tidwell进行逻辑回归

时间:2018-03-07 08:50:46

标签: r logistic-regression

对于逻辑回归,我想测试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中问过这个问题,但由于那里的主题不合适,我希望这是正确的地方。)

提前致谢! 西蒙

0 个答案:

没有答案