2016-06-09 12 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 
相關問題