在logit模型中,是否有一种比每个级别都使用虚拟变量更聪明的方法来确定独立序数变量的影响?
在logit模型中,是否有一种比每个级别都使用虚拟变量更聪明的方法来确定独立序数变量的影响?
Answers:
要添加到@ dmk38的响应中,“任何分数集都可以提供有效的测试,只要它们的构建没有咨询实验结果即可。如果分数集很差,则它会严重扭曲确实构成了如果按顺序分类,则测试将不会敏感。因此,分数应体现出有关分类的构建和使用方式的最佳见解。” (Cochran,1954年,Agresti,2002年,第88-89页)。换句话说,将有序因子作为数字计分变量仅是建模问题。只要有道理,这只会影响您解释结果的方式,并且对于如何为序数变量选择最佳表示形式没有明确的经验法则。
考虑以下有关孕妇饮酒和是否存在先天性畸形的示例(Agresti,分类数据分析,表3.7第89页):
0 <1 1-2 3-5 6+
Absent 17066 14464 788 126 37
Present 48 38 5 1 1
在这种情况下,我们可以使用逻辑回归或简单关联表对结果进行建模。让我们在R中进行操作:
tab3.7 <- matrix(c(17066,48,14464,38,788,5,126,1,37,1), nr=2,
dimnames=list(c("Absent","Present"),
c("0","<1","1-2","3-5","6+")))
library(vcd)
assocstats(tab3.7)
通常(12.08,P = 0.016751)或LR(6.20,P = 0.184562)统计量(用4 DF)不占在饮酒的有序等级。
将两个变量都视为等分间隔的序数(这对二进制变量(如畸形)没有影响,我们选择基线为0 =不存在),我们可以通过线性关联测试线性。让我们首先构造该列联表的分解图:
library(reshape)
tab3.7.df <- untable(data.frame(malform=gl(2,1,10,labels=0:1),
alcohol=gl(5,2,10,labels=colnames(tab3.7))),
c(tab3.7))
# xtabs(~malform+alcohol, tab3.7.df) # check
然后我们可以使用
library(coin)
#lbl_test(as.table(tab3.7))
lbl_test(malform ~ alcohol, data=tab3.7.df)
cor(sapply(tab3.7.df, as.numeric))[1,2]^2*(32574-1)
可以看出,没有太多证据表明这两个变量之间存在明确的关联。正如Agresti所做的那样,如果我们选择将酒精含量重新编码为{0,0.5,1.5,4,7},即使用中间值作为假设的连续量表,而最后的分数则完全是任意的,那么我们可以得出结论对母性饮酒对先天性畸形发展有较大影响:
lbl_test(malform ~ alcohol, data=tab3.7.df,
scores=list(alcohol=c(0,0.5,1.5,4,7)))
得出6.57的检验统计量,关联的p值为0.01037。
使用GLM方法,我们将进行如下操作。但是首先请检查R中的酒精编码方式:
class(tab3.7.df$alcohol)
它是一个简单的无序因子("factor"
),因此是名义上的预测变量。现在,这是三个模型,我们将酒精视为名义,有序或连续的预测指标。
summary(mod1 <- glm(malform ~ alcohol, data=tab3.7.df,
family=binomial))
summary(mod2 <- glm(malform ~ ordered(alcohol), data=tab3.7.df,
family=binomial))
summary(mod3 <- glm(malform ~ as.numeric(alcohol), data=tab3.7.df,
family=binomial))
。Wald检验在通常的5%水平下并不显着。在这种情况下,设计矩阵仅包括2列:第一列是截距为1的常数列,第二列是预测变量的数值(1到5),就像简单的线性回归一样。总而言之,该模型测试了酒精对结果的线性影响(对数刻度)。
但是,在其他两种情况下(mod1
和mod2
),我们得到不同的输出,因为用于对预测变量进行建模的设计矩阵不同,可以使用以下方法检查:
model.matrix(mod1)
model.matrix(mod2)
mod1
mod2
mod1
mod2
您可以尝试为酒精分配新的分数,并查看其将如何影响畸形的预测概率。
如果水平是有序的,则在logit(或OLS)回归模型中使用分类预测变量是非常好的。但是,如果您有理由将每个级别视为离散级别(或者实际上您的分类变量是名义变量而不是序数变量),那么,除了伪编码之外,还可以使用正交对比编码。有关非常完整且易于访问的讨论,请参见Judd,CM,McClelland,GH和Ryan,CS,《数据分析:模型比较方法》,Edn。2号 (Routledge / Taylor和Francis,纽约,纽约; 2008年),或仅是Google“对比编码”