【问题标题】:Predicting data via regression model and storing in a vector通过回归模型预测数据并存储在向量中
【发布时间】:2016-06-09 16:27:01
【问题描述】:

抱歉,这可能是一个非常基本的问题。

我使用多元回归为海量气象数据集创建了一个线性模型。我的目标是使用该模型使用预测变量 1、2 和 3 在某个时期内“预测”数据。然后,我会将这些预测数据与该时期的观察数据进行比较。

到目前为止,我的方法是为预测值创建一个新向量并循环遍历该向量,根据提取的线性模型系数创建预测值。然后,我将简单地从观察值中减去预测值。由于某种原因,这种方法导致新的预测向量为 NULL。知道我该如何处理吗?

下面是一个示例。 “数据”是指包含预测变量的数据集。

     coef <- coefficients(multipleRegressionModel)

    predictedValues=c()

    for(i in 1:length(data$timePeriod)){
      predictedValues[i] = append(predictedValues, data$coef[1]+data$predictor1[i]*data$coef[2]+data$predictor2[i]*data$coef[3]+
      data$predictor3[i]*data$coef[4])
    }

diff=c()
diff=observedValues - predictedValues

【问题讨论】:

  • 为什么要循环播放?只需执行predict(multipleRegressionModel, newdata = data)。此外,不要在循环中增长对象,即不要使用append。这太慢了。
  • 谢谢!我不知道预测功能。

标签: r


【解决方案1】:

看起来你让这件事变得比需要的更困难。 R 有一个predict() 函数可以为您完成所有这些工作。如果您有这样的示例data.frame

set.seed(26) 

mydf = data.frame (a=1:20 , b = rnorm(20), 
                   c = 1:20 + runif(20,2,3)*runif(20, 2, 3),
                   d = 1:20 + rpois(20,5)*runif(1:20)*sin(1:20)) 

您想在某些行上进行训练,并在其他行上进行测试

trainRows<-sample(1:20, 16)
mydf.train<-mydf[trainRows,]
mydf.test<-mydf[-trainRows,]

然后拟合模型并预测

model<-lm(a~b+c+d, data = mydf.train)
summary(model)  #gives info about your model. 

mydf.test$pred<-predict(model1, newdata = mydf.test)

MSE<-mean((mydf.test$pred-mydf.test$a)^2) #calculate mean squared error
MSE
#[1] 0.06321

使用mydf.test$pred查看预测

【讨论】:

  • 谢谢!我不知道预测功能。
【解决方案2】:

这是一个在mtcars 数据上使用glm 的简单示例。

Line<- #setting up the linear model function
function (train_dat, test_dat, variables, y_var, family = "gaussian") 
{
  fm <- as.formula(paste(y_var, " ~", paste(variables, collapse = "+"))) #formula
  glm1 <- glm(fm, data = train_dat, family = family) #run the model
  pred <- predict(glm1, newdata = test_dat) #predict the model
}

data(mtcars)
y_var<-'mpg'
x_vars<-setdiff(names(mtcars),y_var)

mtcars[,'linear_prediction']<-Line(mtcars,mtcars,x_vars,y_var)

head(mtcars)

                   mpg cyl disp  hp drat    wt  qsec vs am gear carb linear_prediction
Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4          22.59951
Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4          22.11189
Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1          26.25064
Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1          21.23740
Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2          17.69343
Valiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3    1          20.38304

【讨论】:

    猜你喜欢
    • 2014-09-11
    • 1970-01-01
    • 2020-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-02
    • 1970-01-01
    相关资源
    最近更新 更多