You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在R的tidyverse环境中使用lm函数及性别变量回归报错问题

解决方案

一、修正因子类型问题(核心报错根源)

你的gender变量被识别为因子(factor),而线性回归lm()要求因变量为数值型,因子无法完成残差平方、分位数计算等算术操作,因此触发报错。先调整变量类型:

# 查看gender变量类型
class(my_data_set$gender)

# 若为因子,转换为数值型(先转字符避免因子水平顺序混乱)
my_data_set$gender <- as.numeric(as.character(my_data_set$gender))

二、正确提取男性子集

你之前的subset()语法错误:要用==做比较判断,而非=(赋值符号);且gender编码为1代表男性,直接用数值匹配即可,无需male字符串:

# 用tidyverse的filter(符合你当前环境,推荐)
male_total <- my_data_set %>% filter(gender == 1)

# 或用base R的subset
male_total <- subset(my_data_set, gender == 1)

三、运行男性群体的回归分析

根据你的需求,确保回归模型的因变量为数值型。示例如下:

# 示例:在男性子集中,以dem_disgusted为自变量,分析其对某结果变量(如投票意愿vote)的影响
male_reg <- lm(vote ~ dem_disgusted, data = male_total)
summary(male_reg)

如果你的目标是分析性别与dem_disgusted的关联(全样本中男性vs女性),由于gender是二分类变量,更适合用逻辑回归替代线性回归:

gender_reg <- glm(gender ~ dem_disgusted, data = my_data_set, family = binomial(link = "logit"))
summary(gender_reg)

四、验证子集提取正确性

运行以下代码确认男性子集的gender值均为1:

table(male_total$gender)

内容的提问来源于stack exchange,提问作者Irene

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 06:01:37