2012-12-25 44 views
1

我有一個非常簡單的csv文件,我試圖用不同的預測方法進行實驗。CSV輸入到R預測與日期通過R工作室?

  Year total UnemplRt 
    1 12/31/2013 NA  7.1 
    2 12/31/2012 39535  8.3 
    3 12/31/2011 36965  10.0 
    4 12/31/2010 36234  10.9 
    5 12/31/2009 37918  8.5 
    6 12/31/2008 42235  4.3 
    7 12/31/2007 55698  3.7 
    8 12/31/2006 58664  3.8 
    9 12/31/2005 59674  4.7 
    10 12/31/2004 51439  5.7 

當我使用R studio導入它時,我得到這個列表。 (上面),它只是列表名稱。和Col標題,我似乎無法引用。

我是R的總新手,但我收集我應該有一個數據框,第1列應該是日期類型。不知道如何從這裏到達那裏..然後,這是預測輸入的正確佈局嗎?

如何使用預測(Mutli模型)使用第10-4行來預測3上的「總數」使用3上的UnemplRt(這是預先已知的,等等,即10-3預測2和10 -2來預測1)哪一個當然會是即將到來的一年的預測......我已經從電子表格中的直線性迴歸工作,但它出來太高,所以我正在尋找方法這將更好地考慮最近的數據,並注意曲線而不是直線。

這是非常簡單但有希望足夠通用,其他人會發現答案也很有用。

+1

你的問題到底是什麼?如何構建一個模型來預測您的時間序列數據或如何導入數據並解釋R創建的結構? – Thilo

+0

關於你的輸出:如果你調用'str(yourdata)',你會看到你確實有一個data.frame有三列。您應該能夠引用您的值,例如'yourdata $ total'。 – Thilo

+0

StatewideProjectiontest $ total NULL'data.frame':\t 11 obs。 1變量: $ V1:因子w/11水平「12/31/2004,51439,5.7」,..:11 10 9 8 7 6 5 4 3 2 ... – dartdog

回答

5

我不是100%確定你在問什麼,但我想你會創建一些時間序列模型,其中包含一些迴歸。在建立一個簡單的時間序列模型和一個包含迴歸器的概述下面。

# load the base data as presented in the question 
Workbook1 <- structure(list(Year = structure(1:10, .Label = c("31-Dec-04", 
"31-Dec-05", "31-Dec-06", "31-Dec-07", "31-Dec-08", "31-Dec-09", 
"31-Dec-10", "31-Dec-11", "31-Dec-12", "31-Dec-13"), class = "factor"), 
    total = c(51439L, 59674L, 58664L, 55698L, 42235L, 37918L, 
    36234L, 36965L, 39535L, NA), UnemplRt = c(5.7, 4.7, 3.8, 
    3.7, 4.3, 8.5, 10.9, 10, 8.3, 7.1)), .Names = c("Year", "total", 
"UnemplRt"), class = "data.frame", row.names = c(NA, -10L)) 

# Make a time series out of the value 
dependent <- ts(Workbook1[1:9,]$total, start=c(2004), frequency=1) 

# load forecast package 
require(forecast) 

# make a model that fits, you can get other models as well. Think it is best to some studying of the forecast package documentation. 
fit <- auto.arima(dependent) 

# do the actual forecast 
fcast <- forecast(fit) 

# here some results of the forecast 
fcast 
    Point Forecast Lo 80 Hi 80  Lo 95 Hi 95 
2013   39535 31852.42 47217.58 27785.501 51284.50 

# You can make a plot as following: 
plot(fcast) 

當你正在包括一些失業率數字,我認爲你可能要包括這在某種迴歸模型的你的預測。在你如何處理這個問題的模型下面:

# load independent variables in variables. 
unemployment <- ts(Workbook1[1:9,]$UnemplRt, start=c(2004), frequency=1) 
unemployment_future <- ts(Workbook1[10:10,]$UnemplRt, start=c(2004), frequency=1) 

# make a model that fits the history 
fit2 <- auto.arima(dependent, xreg=unemployment) 

# generate a forecast with the already known unemployment rate for 2013. 
fcast2 <- forecast(fit2,xreg=unemployment_future) 

在這裏預測的結果,再次你可以像上面那樣繪製一個圖。

fcast2 
    Point Forecast Lo 80 Hi 80 Lo 95 Hi 95 
2013  45168.02 38848.92 51487.12 35503.79 54832.25 

希望以上幫助。

+0

太棒了!正是我想要做的,我猜想其他問題,我嘗試格式化一個DF是很古怪的,就預測2而言,哪個值是平均值?45,168?我猜... – dartdog

+0

好奇,這與我做了一個簡單的直線迴歸完全一樣的值。我所希望的是加重新近的數據,因爲我「感覺」預測的增長過高,因爲去年使用相同的方法。因此,加權更新的數據應該使去年的預測更接近這一點? (希望是有道理的) – dartdog

+0

@dartdog確保你用plot(fcast2)繪製數據,並且你可以看到它。點是45168,是所謂的點預測,其他數字表示置信區間的低和高(80%和90%)。這並不讓我感到驚訝,該模型給你的規則迴歸模型差不多;尤其是考慮到預測1(一條直線)的結果。 auto.arima模型是一種特殊的模型,但要確保檢查預測包中提供的各種模型。 – Jochem