2016-12-16 77 views
1

modelr包中,函數gather_predictions可用於將多個模型的預測添加到數據框,但我不確定如何在函數調用中指定這些模型。幫助文檔提供以下示例:如何將大量模型傳遞給gather_predictions

df <- tibble::data_frame(
    x = sort(runif(100)), 
    y = 5 * x + 0.5 * x^2 + 3 + rnorm(length(x)) 
) 

m1 <- lm(y ~ x, data = df) 
grid <- data.frame(x = seq(0, 1, length = 10)) 
grid %>% add_predictions(m1) 

m2 <- lm(y ~ poly(x, 2), data = df) 
grid %>% spread_predictions(m1, m2) 
grid %>% gather_predictions(m1, m2) 

這裏的模型在函數調用中特別提到。如果我們有一些我們想要預測的模型,那很好,但如果我們有大量或未知數量的模型呢?在這種情況下,手動指定模型不再可行。

幫助文檔短語參數段的方式似乎表明您需要將每個模型添加爲單獨的參數。

gather_predictions和spread_predictions需要多個模型。 名稱將取自 型號名稱的參數名稱。

例如,將模型列表輸入到gather_predictions中不起作用。

是否有一些簡單的方法來輸入一個列表/大量的模型gather_predictions?

例如對於10款車型中的列表:

modelslist <- list() 
for (N in 1:10) { 
    modelslist[[N]] <- lm(y ~ poly(x, N), data = df) 
} 

如果具有模型存儲比列表效果更好一些其他的方式,這很好,以及。

回答

1
m <- grid %>% gather_predictions(lm(y ~ poly(x, 1), data = df)) 
for (N in 2:10) { 
    m <- rbind(m, grid %>% gather_predictions(lm(y ~ poly(x, N), data = df))) 
} 
+0

作品爲例子,但是這並不意味着你必須創建爲你沿着去,不存儲模式,這是罰款,對於培養好和快速的線性模型的模型,但對於更復雜的模型可能並不理想。 –

+0

@ MarijnStevering哦,是的,我想這只是存儲結果,但我只是這樣做,使其更加簡潔。要存儲這些模型,只需在循環內插入一條與您的問題中相同的行。話雖如此,你不能以這種方式使用列表數據類型,所以它可能會導致你不得不使用模型兩次,或者至少在列表中將數據類型轉換爲'gather_predictions'中的數據類型之前。 –