2015-10-25 31 views
0

我試圖從線性模型預測新值,並將其應用於64個項目的列表。我的線性模型稱爲JAN.LIN,我的新值位於名爲JAN.FUT的數據集中。一個小的可重複的例子:從線性模型預測列表中的新值

JAN.FUT <- structure(list(file1 = structure(list(x = c(6L, 5L, 15L, 11L, 
14L, 19L, 6L, 16L, 17L, 6L, 13L, 8L, 14L, 14L, 7L, 19L, 4L, 1L, 
11L, 3L, 2L, 12L, 15L, 3L, 5L, 14L, 2L, 12L, 13L, 1L, 7L, 5L, 
8L, 3L, 19L, 5L, 15L, 13L, 14L, 20L), y = c(29L, 23L, 17L, 14L, 
3L, 5L, 24L, 22L, 16L, 21L, 28L, 52L, 28L, 43L, 33L, 60L, 28L, 
18L, 11L, 9L, 30L, 15L, 17L, 8L, 44L, 19L, 57L, 59L, 45L, 30L, 
9L, 13L, 1L, 60L, 39L, 21L, 35L, 50L, 3L, 44L)), .Names = c("x", 
"y")), file2 = structure(list(x = c(11L, 3L, 11L, 5L, 8L, 7L, 
6L, 18L, 8L, 17L, 7L, 15L, 19L, 3L, 10L, 12L, 13L, 2L, 9L, 10L, 
15L, 13L, 3L, 6L, 16L, 1L, 20L, 5L, 9L, 4L, 12L, 1L, 6L, 13L, 
18L, 7L, 18L, 19L, 15L, 13L), y = c(56L, 31L, 40L, 43L, 20L, 
45L, 55L, 8L, 43L, 26L, 7L, 52L, 7L, 31L, 11L, 14L, 55L, 26L, 
4L, 42L, 34L, 44L, 12L, 4L, 30L, 60L, 23L, 44L, 29L, 55L, 6L, 
37L, 11L, 14L, 36L, 52L, 28L, 22L, 31L, 33L)), .Names = c("x", 
"y"))), .Names = c("file1", "file2")) 

> JAN.LIN 
$file1 

Call: 
lm(formula = x$y ~ x$x) 

Coefficients: 
(Intercept)   x$x 
-92.372  1.016 

-------------------------------------- 
$file64 

Call: 
lm(formula = x$y ~ x$x) 

Coefficients: 
(Intercept)   x$x 
-64.2104  0.9928 

我試圖使用方法:

PRED=lapply(JAN.FUT, function(x) predict(JAN.LIN, x) 

但這提供了以下錯誤:

Error in UseMethod("predict") : 
no applicable method for 'predict' applied to an object of class "list" 

任何想法?

+0

能否請您提供前面的步驟,使這是一個[最小的可重複的例子(https://stackoverflow.com/questions/5963269/how-to-make-a -great-R再現的-例子)? – cocquemas

+0

@hfty - 我曾嘗試在上面提供一個可重複的示例 –

+1

什麼是JAN.LIN? –

回答

0

爲什麼不與newdata使用predict

attach(faithful)  # attach the data frame 
eruption.lm = lm(eruptions ~ waiting) 
newdata = data.frame(waiting=80) 
predict(eruption.lm, newdata, interval="predict") 
detach(faithful)  # clean up 

你只需要使用你的期望值爲newdata,而不是80從例子。


As shown here

+0

感謝@konrad,但這只是將預測應用於單個數據框,但我需要將其應用於64個項目(64個獨立模型和64個具有新值的獨立數據框)的列表。 –