我正在运行car
版本2.1.4,并尝试使用Anova
函数来获取基于Wald的p值,以使用逻辑回归和成功/失败设置进行功效分析。如果我运行以下简单阶乘因子,该函数通过由于0残余自由度而产生的误差,但显然样本量非常大。我在做什么或想到这个错误?R中的Car ANOVA函数问题?
与glm()
调用有关的问题,因为同样说零残差df
?
X <- matrix(c(100,66566,73,66593,1201,398799,165,66501),
nrow = 4,ncol = 2,byrow = TRUE)
x_df <- data.frame(premium = c(300,300,500,500),
restrict = c(500,2500,500,2500))
x_df$int <- x_df$premium * x_df$restrict
mod <- glm(X~premium+restrict+int,
data=x_df,family=binomial)
summary(mod)
car::Anova(mod,type="III","Wald")
ADD#1:
看来,成功/失败语法不能正常工作。当我手动展开数据至〜60万行配合是相同的,但res.df是正确的:
X<-matrix(c(100,66566,73,66593,1201,398799,165,66501),nrow = 4,ncol = 2,byrow = TRUE)
x_df<-data.frame(premium=c(300,300,500,500),restrict=c(500,2500,500,2500))
x_df$int<-x_df$premium*x_df$restrict
mod<-glm(X~premium+restrict+premium*restrict, data=x_df,family=binomial)
summary(mod)
Anova(mod,type = "III",test.statistic = "Wald")
y=c(rep(1,100),rep(0,66566),rep(1,73),rep(0,66593),rep(1,1201),rep(0,398799),rep(1,165),rep(0,66501))
premium<-c(rep(300,66666*2),rep(500,1201+398799+165+66501))
restrict<-c(rep(500,66666),rep(2500,66666),rep(500,1201+398799),rep(2500,165+66501))
x<-data.frame(y=y,premium=premium,restrict=restrict)
mod2<-glm(y~premium+restrict+premium*restrict,data=x,family=binomial)
summary(mod2)
Anova(mod2,type = "III",test.statistic = "Wald")
尝试在公式本身中添加交互项,而不是在之后添加产品? – C8H10N4O2
这实际上是一个统计问题,而不是一个编程问题。投票结束/迁移到CrossValidated。 –
知道我认为这会有所帮助,不是成功/失败语法旨在产生与扩展到等效数量记录完全相同的结果吗? –