逻辑回归的置换检验?

问题描述 投票:1回答:1

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

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包吗?

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

r permutation logistic-regression
1个回答
3
投票

显然,写入的函数仅适用于数值协变量,因为它正在寻找模型矩阵中指定的变量的名称:当您有一个因子的预测变量时,模型矩阵中的名称不再与式。您可以通过以下方法解决此问题:(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)
© www.soinside.com 2019 - 2024. All rights reserved.