我想知道男性物种是否会影响女性对男性求爱的反应。我正在使用逻辑回归,因为回应是成功的一部分(女性对男性求爱的反应)和失败(女性对求爱没有回应):
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包?
谁能告诉我哪里出错了?这个功能对比例数据不起作用吗?
答案 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)