如何在R中同时使用数字/分类值进行有序Logistic回归分析?


17

基本数据:我约有1,000个人标有评估:“ 1,” [好],“ 2”,[中]或“ 3” [差] –这些是我将来要为人们预测的价值。除此之外,我还有一些人口统计信息:性别(分类:男/女),年龄(数字:17-80)和种族(分类:黑人/高加索人/拉丁裔)。

我主要有四个问题:

  1. 我最初试图将上述数据集作为多元回归分析来运行。但是我最近了解到,由于我的依存关系是有序因素,而不是连续变量,因此我应该对此类情况使用序数逻辑回归。我最初使用的是这样的东西mod <- lm(assessment ~ age + gender + race, data = dataset),有人能指出我正确的方向吗?

  2. 从那里开始,假设我对系数感到满意,就知道如何仅将数值插入x1,x2等。但是,例如在有多种响应的情况下,我将如何处理种族:黑人/高加索人/拉丁美洲人?因此,如果它告诉我白种人系数为0.289,而我要预测的某个人是白种人,那么由于值不是数字,我该如何重新插入?

  3. 我还缺少一些随机值-有些是种族的,有些是性别的,等等。我是否还需要做其他一些事情以确保它不会歪斜任何东西?(我注意到,当我的数据集被加载到R-Studio中时,当丢失的数据被加载为时NA,R表示类似(162 observations deleted due to missingness)-但如果它们被加载为空白,则它什么都不做。)

  4. 假设所有这些都可以解决,并且我有我要预测的具有性别,年龄和种族的新数据-R中有没有更简单的方法可以通过我的新系数公式通过所有这些方法来运行所有这些数据,而不是手动进行?(如果这个问题在这里不合适,我可以将其带回R论坛。)

Answers:


16

这里的一些信息可能会为您指明正确的方向。

关于您的数据,您拥有的是具有多个类别的响应,并且无论何时您要对分类响应进行建模,都可以尝试使用某种类型的广义线性模型(GLM)。在您的情况下,您需要考虑与响应有关的其他信息,即您的响应级别具有自然的顺序,即“好”>“中”>“差”,请注意,这与尝试对响应进行建模(例如某人的颜色气球)有何不同很可能会购买(红色/蓝色/绿色),这些值没有自然顺序。当使用有序响应进行这种类型的模型时,您可能需要考虑使用比例赔率模型。

http://en.wikipedia.org/wiki/Ordered_logit

我自己没有使用过,但是polr()MASS软件包中的函数可能会有用,或者,我使用lrm()rms软件包中的函数进行类似的分析,并且发现它非常有用。如果加载这些软件包,请使用?polr?lrm获取功能信息。

足够的背景,关于您的问题:

  1. 这应该在上面进行介绍,检查这些程序包/函数,并阅读序数逻辑回归和比例赔率模型

  2. 每当您有一个分类变量(种族/性别/头发颜色)时,您都希望将它们视为R编码中的“因素”,以便对其进行适当建模。重要的是要知道一个因素是什么以及如何对待它们,但是实际上您将每个类别视为一个单独的级别,然后以适当的方式对其进行建模。只需阅读模型中的因素,您就可以弄清楚发生了什么。请记住,将分类变量视为因子并不是glm模型或比例赔率模型独有的,而是通常所有模型如何处理分类变量。 http://www.stat.berkeley.edu/classes/s133/factors.html

  3. 缺失值有时可能很麻烦,但是如果您要进行相当基本的分析,则删除包含缺失值的数据行可能很安全(这并不总是正确的,但是根据您当前的经验水平,猜测您不必担心何时以及如何处理缺失值的细节)。实际上,这几乎是R所做的。如果您有用于建模的数据,或者您连续缺少用于响应的信息或模型中的任何协变量,R都将排除此数据(这是您看到的警告)。显然,如果由于缺失而要排除大部分数据,则结果可能会产生偏差,并且尝试获取有关为何缺少这么多值的更多信息可能很好,但是如果 不会在10,000行数据中丢失162个观察值,所以我不会为之过分。如果您对某些更具体的内容感兴趣,可以在Google上找到处理丢失数据的方法。

  4. 几乎所有的R模型对象(lmglmlrm,...)将有一个相关的predict()功能,让您计算的预测值对于您目前的建模数据集,并额外为您希望预测的结果另一个数据集。只需搜索?predict.glm?predict.lm尝试获取想要使用的任何模型类型的更多信息。这是人们希望对模型进行的非常典型的事情,因此请放心,有一些内置函数和方法应该使这样做相对简单。

祝你好运!


2
  1. 是的,订购logit或probit将是起点。这是有关使用R的有序logit 的指南。其他CV问题可能可以帮助您解决遇到的任何障碍-尝试使用标签“ logit”,“ probit”和“ ordinal”。

  2. ķķ-1个caucasian

  3. 处理丢失的数据在很大程度上取决于眼前的问题,是的,如何处理丢失的数据可能会带来偏差。这本书摘录很好地描述了可以产生丢失的数据,这将有助于你手头考虑潜在的偏见在你自己的问题四种机制。(特别是第25.1节,第530页。)

  4. 许多建模程序包都具有某种predict功能,实际上,上面链接的第一个教程包括一个演示。


非常感谢!关于#2的快速跟进:这是我的基本假设-但是代码是什么,其中有两个以上的变量?例如,白种人,黑人,拉丁美洲人。
Ryan

非常欢迎!在该示例中,您将选择一个类别以包含在截距中,例如latino,并为其他两个类别添加虚拟变量。虚拟变量的值为1 caucasian表示白种人受访者,与black虚拟变量类似。两者的0值表示拉丁裔受访者。合理?
肖恩·复活节

因此,我应该将数据集从具有多个响应(“ black”,“ caucasian”和“ latino”)的一列更改为一个具有1s和0s的“ black”列,一个具有1s和0s的“ caucasian”列以及一个“拉丁裔”列为1和0?
Ryan

那是一种可以正常工作的方法。使用两列的唯一区别是您如何解释截距。您可以手动执行此操作,但我相信R中的因素可以为您解决。尝试一下 -通过类似的示例逐步介绍使用因素。干杯!
肖恩·复活节

1
教程的链接已断开。如果有人可以修复它,那就太好了!
丹·希克斯
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.