在R中使用电子表格数据运行线性模型

12

我有一个包含106个不同变量的数据集,其中分别属于两种类型-a和b。例如,这些变量可以是年龄和性别等。我想运行一个线性模型,根据协变量来预测每个个体属于a类型还是b类型。

我使用以下代码读取每个个体的年龄、性别和类型标签:

`data = read.xlsx("spreadsheet.xlsx",2, as.is = TRUE)`
age = data$age
gender = data$gender
type = data$type

其中每个都是以下形式:

age = [28, 30, 19, 23 etc]
gender = [male, male, female, male etc]
type = [a b b b]

然后我尝试使用以下方式设置模型:

model1 = lm(type ~ age + gender)

但是我收到了这个错误消息:

Warning messages:
1: In model.response(mf, "numeric") :
using type="numeric" with a factor response will be ignored
2: In Ops.factor(y, z$residuals) : - not meaningful for factors

我尝试使用以下方式更改type、age和gender的格式:

age = as.numeric(as.character(age))
gender = as.character(gender)
type = as.character(type)

但是这并不起作用!


2
由于您的响应是二元的,我认为您可以使用逻辑回归。您可以使用您喜欢的搜索引擎找到如何在R中执行逻辑回归的教程。 - Roland
1个回答

27

在这里,你不能使用具有一个因子作为响应变量的线性回归模型,而这正是你尝试做的(type是你的响应变量)。回归模型需要数值响应变量。你应该转而查看分类模型。

正如Roland指出的那样,你可能希望从重新陈述你的“type”变量开始,将其作为逻辑、二项式变量。你可以创建一个名为“is.type.a”的新变量,它将包含TRUE或FALSE,而不是一个名为“type”的因子,其中有两个级别“a”和“b”。

然后,你可以尝试基于二项分布的逻辑回归。

model <- glm(is.type.a ~ age + gender,data=data,family="binomial")

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接