2015-01-20 40 views
2

我試圖將模型擬合到數據集中的每個位置。我運行下面的代碼(用樣品重新鏡像我使用的數據):錯誤:執行rlm時變量的類型(列表)無效

library(plyr) 
library(MASS) 

month.abbr <- c("Jan", "Feb", "Mar", "Apr", "May", 
    "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec") 
month <- factor(rep(month.abbr, length = 1200), levels = month.abbr) 
county_code <- sample(1:100, 1200, replace = T) 
store_rev <- sample(2000:85000, 1200, replace = T) 
color_levels <-c('blue', 'red', 'green') 
colors <- factor(rep(color_levels, length = 1200), levels = color_levels) 
data <- data.frame(month, county_code, store_rev, colors) 

product_aggregate_values <-ddply(data, ~month+county_code+colors, summarise, total_rev = sum(store_rev)) 
deseasf <- function(total_rev) rlm(total_rev~month-1, maxit = 50) 
models <- ddply(product_aggregate_values, ~county_code + colors, deseasf) 
failed <- ddply(models, function(x) !x$converged) 

而且我得到以下錯誤:

Error: invalid type (list) for variable 'total_rev' 

我想可能是因爲我使用product_aggregate_values作爲data.frame,但是當我嘗試使用daply創建它,並相應地調整代碼,我收到以下錯誤:

Error in splitter_a(.data, .margins, .expand) : 
'pairlist' object cannot be coerced to type 'integer' 
Error in inherits(.data, "split") : object 'models' not found 
+0

請花時間讓您的示例[reproducible](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)。提供一個樣本'數據'對象,以便我們知道您正在使用的對象類型。理想情況下,我們可以將您的代碼複製/粘貼到R中,並獲得與您相同的錯誤。這會讓你更容易幫助你。 – MrFlick 2015-01-20 19:11:12

回答

0

的問題是在你的deseasf功能。傳入的是子集數據幀,而不僅僅是total_rev載體。您應該使用它作爲data=參數rlm。這個函數應該是

deseasf <- function(x) rlm(total_rev~month-1, data=x, maxit = 50) 

這實際上還是產生錯誤與您的測試數據,因爲你正試圖估計係數每個月,你只需要每個月一個值,讓你獲得AA「完美」,這rlm()實際上抱怨。希望它能處理你的真實數據。

相關問題