在IV因子相同时,clm()
(ordinal
软件包)的功能是否有不同的模型统计信息,但是一旦将其编码为数字因子而又将其编码为字符串,是否有理由吗?
说明和工作示例
假设以下数据:
c <- data.frame(a=c(1,1,1,1,1,1,0,0,0,0,0,0), b=c(1,1,1,0,0,0,1,1,1,0,0,0), c=c(1,0,1,0,1,0,1,0,1,0,1,0))
c$dv <- factor(c(1,2,3,4,5,1,2,3,4,5,1,1), ordered=TRUE)
c$factorA <- factor(c$a)
c$factorB <- factor(c$b)
c$factorC <- factor(c$c)
c$factorStringA <- "Human"
c$factorStringA[c$a == 0] <- "Inhuman"
c$factorStringB <- "Lemon"
c$factorStringB[c$b == 0] <- "Orange"
c$factorStringC <- "Plant"
c$factorStringC[c$c == 0] <- "Animal"
c$factorStringA <- factor(c$factorStringA)
c$factorStringB <- factor(c$factorStringB)
c$factorStringC <- factor(c$factorStringC)
存在以字符串开头的虚拟因子变量(即$factorStringA
)和以字符串开头的num
(即$factorA
)。如人们所见,每种类型的变量都以相同的方式区分数据(即$factorA
与$factorStringA
具有相同的分布)。
我在R中运行了此序数逻辑回归(使用ordinal
包):
clm(dv ~ factorA * factorB, data=c)
我得到summary()
的以下结果:
link threshold nobs logLik AIC niter max.grad cond.H
logit flexible 12 -17.85 57.71 4(0) 4.03e-07 2.3e+02
Coefficients:
Estimate Std. Error z value Pr(>|z|)
factorA1 1.898 1.846 1.028 0.304
factorB1 1.348 1.663 0.810 0.418
factorA1:factorB1 -2.933 2.331 -1.259 0.208
我运行了具有相应因子变量的相同模型:
summary(clm(dv ~ factorStringA * factorStringB, data=c))
link threshold nobs logLik AIC niter max.grad cond.H
logit flexible 12 -17.85 57.71 4(0) 4.03e-07 1.6e+02
Coefficients:
Estimate Std. Error z value Pr(>|z|)
factorStringAInhuman 1.042 1.323 0.788 0.431
factorStringBOrange 1.668 1.612 1.035 0.301
factorStringAInhuman:factorStringBOrange -2.998 2.357 -1.272 0.203
存在差异。首先,我认为它们可能与因素的顺序有关(即使未针对任何因素声明顺序),但这并没有帮助。其次,我认为计算交互作用有误:但是简单的factorA + factorB
和相应的factorStringA + factorStringB
模型的仿真证明不是这种情况。
尽管在上面的示例中差异是最小的,但在我的真实数据集中,差异是有意义的(它们使某些交互作用和主要影响变得显着,而其他则没有)。我的数据正是这样的:有序因变量和一对二进制虚拟分类因子。
你们知道IV编码方式(看似完全相同)的原因吗?