我正在查看this kaggle competition中的数据。我专注于这两列:
此处LotFrontage缺少值,而LotArea没有。两个变量都非常相关。所以我以为我拟合了线性回归模型,并使用拟合模型估算了LotFrontage的缺失值。这是我的尝试(我是R newby):
ggplot(OriginalData, aes(x = LotArea, y = LotFrontage)) + geom_point()
fit <- lm(LotFrontage ~ LotArea, OriginalData)
tidy(fit)
Slope <- coef(fit)[term = 'LotArea']
Intercept <- coef(fit)[term = '(Intercept)']
OriginalData$LotFrontage[is.na(OriginalData$LotFrontage)] <- Intercept + (Slope * OriginalData$LotArea)
sum(is.na(OriginalData$LotFrontage))
ggplot(OriginalData, aes(x = LotArea, y = LotFrontage)) + geom_point()
我认为有些不对劲。只是想知道,如何才能使用拟合的斜率在截点图中绘制一条简单的线并进行拦截?谢谢!
答案 0 :(得分:1)
首先,您在估算缺失值的过程中犯了一个错误。
Data$Y[is.na(Data$Y)] <- Intercept + (Slope * Data$X)
<-
前后的值具有不同的长度。
它会导致警告。
您应该将其修改为:
Data$Y[is.na(Data$Y)] <- (Intercept + (Slope * Data$X))[is.na(Data$Y)]
如果您想添加一条简单的回归线,则可以使用:
+ geom_abline(slope = Slope, intercept = Intercept)
但是在这种情况下,您会出现倾斜和截距的情况。
geom_abline()
只能成一条直线。(简单线性回归)
+ geom_smooth(method = "lm")
它使用平滑方法来拟合数据,例如lm,glm,gam,黄土,MASS :: rlm。 您可以搜索帮助页面以获取详细信息。