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

我尝试使用以下方法更改类型、年龄和性别的格式:

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

但这不起作用!

4

1 回答 1

25

您不能使用带有因子作为响应变量的线性回归模型,这就是您在此处尝试做的(类型是您的响应变量)。回归模型需要数值响应变量。相反,您应该查看分类模型。

正如 Roland 指出的那样,您可能希望首先将您的“类型”变量重新声明为逻辑的二项式变量。您可以创建一个名为“is.type.a”的新变量,而不是具有两个级别“a”和“b”的称为“type”的因子,该变量将包含 TRUE 或 FALSE。

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

model <- glm(is.type.a ~ age + gender,data=data,family="binomial")
于 2013-10-14T15:34:19.883 回答