逻辑回归的置换检验?

时间:2018-01-04 19:44:03

标签: r permutation logistic-regression

我想知道男性物种是否会影响女性对男性求爱的反应。我正在使用逻辑回归,因为回应是成功的一部分(女性对男性求爱的反应)和失败(女性对求爱没有回应):

behavior <- structure(
list(male = c("speciesB", "speciesB", 
  "speciesB", "speciesB","speciesB", "speciesB",
  "speciesB", "speciesA", "speciesA", "speciesA"), 
courtship = c(1, 1, 3, 6, 2, 2, 2, 23, 4, 1), 
female_response = c(0,0, 3, 4, 0, 1, 0, 23, 2, 1)), 
.Names = c("male", "courtship","female_response"), 
row.names = c(1L, 2L, 3L, 4L, 5L, 6L, 7L,40L, 59L, 67L), 
class = "data.frame")

model <- glm(cbind(female_response,courtship-female_response)~male,
 family=binomial, data=behavior)

除了似然比检验之外,我还想用排列检验来检验我的假设,因为我有一个小数据集(46位女性),其中有一些异常值似乎对结果产生了不适当的影响。

据我所知,来自现在存档的glmperm()包的prr.test是唯一可用于对广义线性模型进行置换测试的函数。

当我用我的模型调用该函数时:

packageurl <- "https://cran.r-project.org/src/contrib/Archive/glmperm//glmperm_1.0-5.tar.gz"
install.packages(packageurl, repos=NULL, type="source")
library(glmperm)
prr.test(cbind(female_response,courtship-female_response) ~ male, var="male" , family=binomial, data=behavior)

我反复收到错误:

Error in prr.test(cbind(female_response, courtship - female_response) ~  :var not a covariate in the formular

为什么glmperm存档?是否有一些理由为什么人们不进行逻辑回归的排列检验?有没有更好的R包?

谁能告诉我哪里出错了?这个功能对比例数据不起作用吗?

1 个答案:

答案 0 :(得分:3)

显然,所写的函数仅适用于 numeric 协变量,因为它正在寻找模型矩阵中指定的变量的名称:当你有一个预测器时是一个因素,模型矩阵中的名称不再与公式中的名称匹配。您可以通过以下方法解决此问题:(1)将您的(两级)因子转换为虚拟变量,例如: behavior$maleDummy <- as.numeric(behavior$male=="speciesB")或(2)在函数调用中使用虚拟变量的派生名称:

res <- prr.test(cbind(female_response,courtship-female_response) ~ male, 
   var="malespeciesB" , family=binomial, data=behavior)