我有一个由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)
但这不起作用!
答案 0 :(得分:18)
您不能使用带有因子的线性回归模型作为您的响应变量,这是您在此尝试执行的操作(类型是您的响应变量)。回归模型需要数字响应变量。你应该看一下分类模型。
正如Roland所指出的,您可能希望首先将“类型”变量重新设置为逻辑二项式变量。您可以创建一个名为“is.type.a”的新变量,而不是一个名为“type”的因子,它包含两个级别“a”和“b”,它包含TRUE或FALSE。
然后,您可以尝试基于二项分布的逻辑回归
model <- glm(is.type.a ~ age + gender,data=data,family="binomial")