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

R/RStudio新手求助:用线性回归拟合值填充age与tax缺失值

解决方案:用线性回归填充age和tax的缺失值

核心思路

先从原始数据中筛选出所有变量均无缺失值的子集,用这个子集训练回归模型;然后针对age或tax存在缺失的行,用模型预测拟合值来替换NA。

完整代码实现

# 假设你的数据框名为Data,变量名是小写:price、sqm、age、feats、ne、cor、tax
# 1. 筛选出所有变量都无缺失值的训练集
train_data <- Data[complete.cases(Data), ]

# 2. 训练age的回归模型(基于无缺失的训练数据)
lm_age <- lm(age ~ price + sqm + feats, data = train_data)

# 3. 训练tax的回归模型
lm_tax <- lm(tax ~ price + sqm + feats, data = train_data)

# 4. 填充age的缺失值
# 定位age为NA的行索引,用对应行的自变量数据预测拟合值
age_na_idx <- which(is.na(Data$age))
Data$age[age_na_idx] <- predict(lm_age, newdata = Data[age_na_idx, ])

# 5. 填充tax的缺失值
tax_na_idx <- which(is.na(Data$tax))
Data$tax[tax_na_idx] <- predict(lm_tax, newdata = Data[tax_na_idx, ])

关键细节解释

  • 训练集的选择:complete.cases(Data)会筛选出所有变量(包括被预测的age/tax和自变量)都无缺失的行,确保训练模型的样本是完全完整的,避免lm自动删除含NA行带来的逻辑混乱。
  • 变量名一致性:必须保证代码中的变量名和数据框Data里的命名完全一致(比如你数据里是小写age,就不要写成大写AGE,这是原代码的典型错误)。
  • 简化预测逻辑:不需要复杂循环,直接定位缺失行的索引,将这些行的自变量数据作为newdata传入predict,就能精准生成对应缺失值的拟合结果并替换。

额外提示

如果你的自变量(price、sqm、feats等)也存在缺失值,需要先处理这些缺失,或者调整回归模型的自变量组合,确保训练集里的自变量都是完整的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 05:17:41