【问题标题】:transforming variables to use for prediction in regression model转换变量以用于回归模型中的预测
【发布时间】:2020-02-12 05:55:31
【问题描述】:

我有以下数据集,我希望在 pred1pred2pred3pred5pred6 中找到最好的变量来构建回归模型来预测 resp1 和 @987654332 @。

到目前为止,我只发现pred2 似乎可以用于resp1

library(ggplot2)

testdat <- read.csv("testdat.csv", header = T)

plot(testdat$pred2,testdat$resp1)
m1<-lm(resp1~pred2, data=testdat)
smooth <- smooth.spline(testdat$pred2,testdat$resp1, spar=1)
lines(smooth, col='red', lwd = 2, lty = 2)

我尝试^2,sqrt,log 进行转换,当我检查summary(m1) 时,无论我尝试什么,R-squared 似乎都没有高于53%,绝望。

转换变量预测resp2也一样,不高于66%

plot(testdat$pred3,testdat$resp2)

m1<-lm(resp2~pred3, data=testdat)
smooth <- smooth.spline(testdat$pred3,testdat$resp2, spar=1)
lines(smooth, col='red', lwd = 2, lty = 2)

样本数据集: https://www.filehosting.org/file/details/846977/testdat.csv

如果您尝试生成回归模型来预测resp1,然后使用pred1pred2pred3 中的一个或多个变量来预测resp2,则高度考虑拥有多个变量。 pred5pred6。你会怎么做?

【问题讨论】:

  • 您的问题是什么?你有理由认为 R 平方应该高于 0.53 吗?您是否将自己限制在单个变量的线性回归上?由于您正在绘制样条曲线,您是否对基于样条曲线的模型感兴趣?
  • 我只是试图找到最好的变量来预测resp1resp2。我希望使用回归模型。@Gregor-reinstateMonica
  • 我还是不明白你需要什么帮助。你考虑样条回归吗?还是你想坚持线性回归?如果模型中有多个变量呢?你只关心R^2吗?或者您是否担心过度拟合,并希望使用测试集来确保您的模型是通用的?拟合模型的教科书很多……你希望这里有什么,教程或教科书的总结?这不是这个网站的真正用途......
  • 如果您尝试生成一个回归模型来预测resp1,然后通过使用pred1pred2 中的一个或多个变量来预测resp2,则高度考虑具有多个变量、pred3pred5pred6。你会怎么办? @Gregor-reinstateMonica
  • 您会说您正在寻找变量选择方法吗?我会使用 LASSO 或 glmnet 来选择变量,请参阅 glmnet 包。对于您展示的第二张图片,它显然是非线性的,因此我可能会使用 mgcv 包中的 GAM。

标签: r regression data-analysis prediction


【解决方案1】:

如果您希望使用线性回归,您可以对您的数据执行 RESET 测试并从那里开始工作:

resettest(resp1~pred2, data=testdat, power = 2:3, type = "regressor)

如果 p.value 低于 0.05,则必须更改模型。 并使用调整后的 R2 而不是 R2 来进行模型之间的比较。

否则,可能需要有关您的数据的更多信息(例如,它的性质是什么?)

【讨论】:

    猜你喜欢
    • 2020-01-04
    • 1970-01-01
    • 2021-09-25
    • 2019-03-27
    • 2021-12-08
    • 2016-06-02
    • 2012-10-17
    • 2021-12-30
    • 1970-01-01
    相关资源
    最近更新 更多