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

R语言中基于完美拟合线预测填充列NA缺失值的实现方法

实现方案

你可以通过拟合A、B的反比例关系模型,再调用predict()完成缺失值填充,具体实现如下:

步骤1:构建训练子集

首先提取A、B均无缺失的样本作为训练集:

train_df <- df[!is.na(df$B), ]

步骤2:两种建模填充方案

方案1:用lm()拟合后直接predict()填充

直接以B为因变量、1/A为自变量拟合线性模型(适配两者的反比关系),再直接预测缺失值:

# 拟合B和1/A的线性模型
model_B <- lm(B ~ I(1/A), data = train_df)
# 定位B缺失的行
na_rows <- is.na(df$B)
# 预测并填充缺失值
df$B[na_rows] <- predict(model_B, newdata = df[na_rows, ])

该方案的优势是会自动适配B和1/A的最优线性关系,兼顾数据整体分布趋势,填充后可以保留原有的反比关联特征。

方案2:非线性拟合得到最优k值填充

如果你需要严格维持A*B=k的完美反比关系,可以用非线性最小二乘拟合得到最优的k值后填充,比手动取均值的方法误差更小:

# 拟合A ~ k/B的非线性模型,得到最优k值
model_nls <- nls(A ~ k/B, data = train_df, start = list(k = mean(train_df$A * train_df$B)))
k_opt <- coef(model_nls)["k"]
# 填充缺失值
df$B[is.na(df$B)] <- k_opt / df$A[is.na(df$B)]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 14:54:01