我正在构建一个逻辑回归模型,我拥有的变量之一是邮政编码,我可能会想太多,但我可以将邮政编码保持原样并将其回归为:
fitlogit <- glm(target ~ postcode + ..., family="binomial", data = dat)
我在想,一旦我确定了组的粗略范围,将邮政编码组合成 4 个不同的区域并将其建模为虚拟变量可能会更好。
我正在构建一个逻辑回归模型,我拥有的变量之一是邮政编码,我可能会想太多,但我可以将邮政编码保持原样并将其回归为:
fitlogit <- glm(target ~ postcode + ..., family="binomial", data = dat)
我在想,一旦我确定了组的粗略范围,将邮政编码组合成 4 个不同的区域并将其建模为虚拟变量可能会更好。
您可以在这里采取几种方法,从最不费力到最费力:
如果您的研究中的邮政编码足够少,则可以保持原样。一般的经验法则是每个变量应该有十个事件(其中每个邮政编码是一个不同的变量,加上您正在考虑的所有其他变量)。如果每个邮政编码有超过 10 个居民并且您没有太多其他特征,这可能没问题,但您当然应该测试过拟合。
如果您没有足够的事件将所有邮政编码变成虚拟变量,您也可以只虚拟化最常采样的邮政编码(例如,每个超过 50 名居民的邮政编码)。
您可以采用您提到的解决方案并以某种方式对邮政编码进行聚类。当然,有多种方法可以对它们进行聚类——地理上是最明显的,但收入、人口统计或人口密度可能会提供更多信息。
如果您对邮政编码的哪些属性可能会调节其与因变量之间的关系有想法,则可以使用多级模型。这需要最大的额外努力,因为它需要您拟合更复杂的模型并获取邮政编码数据,但它可能是最有价值的,因为它可以让您更好地理解邮政编码关系。
最后,这可能很明显,但请确保邮政编码被编码为分类变量而不是数字变量——这让我被咬了太多次了!