r - 如何在R中创建因子交互变量?为什么我不能直接乘法?

标签 r statistics

我正在做 OLS 回归,并且正在尝试创建交互变量。据我所知,要做到这一点,我只需将两个变量组合在一起。然而,这是行不通的。

假设我有变量种族(白人、少数族裔)和位置(NE、S、W、MW)。我想在NE和种族中的所有人之间创造一种互动效果。所以我这样做:

>NE = location[location==NE]
>race_NE = NE*race
Error in race * NE : non-numeric argument to binary operator

没用。为什么?

然后我找到了代码interaction()。我不确定这意味着什么,但它似乎给了我一些东西:

> cat = interaction(NE, race)
Warning message:
In ans * length(l) + if1 :
  longer object length is not a multiple of shorter object length
> freq(cat)
cat 
                  Frequency Percent
2 NE.0 white       246    44.4
2 NE.1 minority       308    55.6
Total                   554   100.0

我不确定这是否符合我的需要,以便我可以在 lm() 模型中使用交互变量?

我有点迷失在这里。这可能更多是一个统计数据和 R 问题。请帮忙,谢谢

最佳答案

我认为这很大程度上是一个 R 问题。当你这样做时:

NE = location[location==NE]

您可能认为您正在创建一个逻辑变量,可以将其与其他变量相乘以创建交互项。并非如此。因为逻辑比较是在“[”(提取)运算符内完成的,所以它仅选择等于符号 NE 值的 location 值(可能或可能)不是值“NE”。这就是为什么您收到有关不同长度的警告的原因。

如果 NE == "NE" 为真...并且 location 变量包含一些 "NE"在其中,那么你可以这样做:

 NE <- location == NE

这会将 NE 的大概长度为 1 的值替换为与 location 长度相同的向量,其中包含一堆 TRUE 和 FALSE。您可以将其他向量乘以逻辑值,并得到数值结果,其中 TRUE 转换为 1,FALSE 转换为 0。标准 bool 算术在 R 中确实成功。并且您可以在 R 的回归函数中使用以这种方式创建的变量。这不是通常的方法,但它确实提供了合理的结果。

另一方面,表示交互作用的公式方法要紧凑得多,Maxim.K 的评论一针见血。如果您按照上面的方式构建了 NE 变量,您可以执行如下操作:

  lm ( outcome ~ race * NE, data=dfrm) 

“*”在这种情况下实际上有很大不同。在公式中使用时,它不执行乘法(就像“^”不是幂运算符)。另一种稍微笨拙的方法是:

 lm ( outcome ~ race * I(location=="NE"), data=dfrm)

I函数将返回逻辑向量的计算结果。 (这假设 location 的未声明值包括“NE”。当我们讨论构建交互的主题时,您可能需要查看 %in%函数 with 将允许您轻松构建集合成员资格。许多新手通过执行以下操作来构建正确的集合成员资格测试失败:

  NE.SE <- location == c("NE", "SE")  # almost never TRUE

...什么时候他们应该这样做:

 NE.SE <- location %in% c("NE", "SE")

关于r - 如何在R中创建因子交互变量?为什么我不能直接乘法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26955334/

相关文章:

r - 如何自定义包 "randomForest"生成的重要性图

r - 将图形分开打印到 PDF 文件并同时输出 R Markdown

mysql - 统计数据,例如来自大型记录集的网站显示

sql - 如果 SQL Server 统计信息在负载和非高峰使用情况下更新,它们会收集不同的数据吗?

ruby-on-rails - 如何在 Rails 中创建图表?

regex - 字符串中字符位置的转义字符 : R lang

替换数值范围内的值

r - 在 ggplot2 直方图中的图例下插入表格

java - Weka Kernel Estimator 类中的带宽是如何计算的?

machine-learning - 训练-测试分离的缺点