2016-06-09 13 views
0

对于可能是一个非常基本的问题的道歉。通过回归模型预测数据并存储在向量中

我使用多元回归为大量气象数据集创建了线性模型。我的目标是使用该模型在一定时期内使用预测变量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 
+2

为什么你会循环?只要做'预测(multipleRegressionModel,newdata = data)'。另外,不要在一个循环中增长一个对象,即不要使用'append'。这非常缓慢。 – Roland

+0

谢谢!我不知道预测功能。 –

回答

0

它看起来像你正在使这比它需要更困难。 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查看预测

+0

谢谢!我不知道预测功能。 –

0

下面是使用在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 
相关问题