如何在R中表示多个类别的成员资格?

班布

如何表达一个线性模型,其中观察值可以属于多个类别并且类别的数量很大?

例如,使用时间假人作为类别,这是一个易于设置的问题,因为类别(时间段)的数量很小并且是已知的:

tmp <- "day 1, day 2
0,1
1,0
1,1"
periods <- read.csv(text = tmp)
y <- rnorm(3)
print(lm(y ~ day.1 + day.2 + 0, data=periods))

现在,假设不是两天,而是100天。我是否需要创建一个如下所示的公式?

y ~ day.1 + day.2 + ... + day.100 + 0

大概必须以编程方式创建这样的公式。这看起来不雅且不像R。

解决这个问题的正确R方法是什么?例如,除了公式问题之外,还有没有比创建1和0的矩阵更好的方法来创建虚拟对象了(就像我在上面所做的那样)?为了具体起见,假设实际数据(针对每个观察)由开始和结束日期组成(因此tmp在开始和结束之间的每一列中将包含1)。


更新:

根据@jlhoward的答案,这是一个更大的示例:

num.observations <- 1000
# Manually create 100 columns of dummies called x1, ..., x100
periods <- data.frame(1*matrix(runif(num.observations*100) > 0.5, nrow = num.observations))
y <- rnorm(num.observations)
print(summary(lm(y ~ ., data = periods)))

它说明了手动创建假人(1s和0s)数据框的过程。我想研究一下是否有一种更像R的方式来处理这些“每个观察多个假人”的问题。

耶洛华德

您可以使用该.符号在公式中包括响应以外的所有变量,并-1删除截距。另外,将所有内容都放在数据框中;不要做y一个单独的向量。

set.seed(1)    # for reproducibility
df  <- data.frame(y=rnorm(3),read.csv(text=tmp))
fit.1 <- lm(y ~ day.1 + day.2 + 0, df)
fit.2 <- lm(y ~ -1 + ., df)
identical(coef(fit.1),coef(fit.2))
# [1] TRUE

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Schema.org中表示游戏级别的页面?

来自分类Dev

R中类别的矩阵表示

来自分类Dev

如何制作包含多个子类别的类别列表?

来自分类Dev

如何在For循环中有条件地更新多个类别的值

来自分类Dev

如何在Seaborn中创建具有多个组或类别的联合图?

来自分类Dev

如何在MySQL中使用MVC成员资格提供程序?

来自分类Dev

多个类别的散点图

来自分类Dev

从Wikidata获取类别的成员

来自分类Dev

如何将具有多个类别的R数据帧转换为一个类别?

来自分类Dev

如何在R中以饼图的形式绘制类别的单个列

来自分类Dev

如何在R中绘制多个类别变量

来自分类Dev

如何在R中的图形上绘制多个类别变量?

来自分类Dev

如何在Ember中表示具有多个不同序列化的模型?

来自分类Dev

如何在TypeScript中表示包含多个类型的二维数组?

来自分类Dev

如何在Matlab中针对单个轴在单个条形图中表示多个值?

来自分类Dev

如何在 Active Directory 中表示登录多个部门的用户的属性

来自分类Dev

如何在UML中表示Python字典?

来自分类Dev

如何在Go中表示货币?

来自分类Dev

如何在Swift中表示质量的大小?

来自分类Dev

如何在C ++中表示大数

来自分类Dev

如何在MATLAB中表示集群?

来自分类Dev

如何在活动图中表示循环?

来自分类Dev

如何在Dhall中表示以下JSON?

来自分类Dev

如何在PostgreSQL中表示等级?

来自分类Dev

如何在Unity中表示课程列表?

来自分类Dev

如何在Redis中表示此结构

来自分类Dev

如何在Julia中表示抽象时间

来自分类Dev

如何在Typescript中表示值的类型?

来自分类Dev

如何在Prolog中表示情况演算?

Related 相关文章

热门标签

归档