基于拟合线性模型的估算数据

时间:2018-10-07 14:47:20

标签: r kaggle

我正在查看this kaggle competition中的数据。我专注于这两列:

  • LotArea
  • LotFrontage

此处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()

我认为有些不对劲。只是想知道,如何才能使用拟合的斜率在截点图中绘制一条简单的线并进行拦截?谢谢!

1 个答案:

答案 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)]

如果您想添加一条简单的回归线,则可以使用:

  • (1)geom_abline()

+ geom_abline(slope = Slope, intercept = Intercept)

但是在这种情况下,您会出现倾斜和截距的情况。

geom_abline()只能成一条直线。(简单线性回归)

  • (2)geom_smooth()

+ geom_smooth(method = "lm")

它使用平滑方法来拟合数据,例如lm,glm,gam,黄土,MASS :: rlm。 您可以搜索帮助页面以获取详细信息。