インフレ調整価格パッケージ?質問する

インフレ調整価格パッケージ?質問する

ある列に価格、別の列に年数が格納された data.frame があるとします。

prices <- rnorm(200, mean=10, sd=3)
years <- round(rnorm(200, mean=2006, sd=5))
df <- data.frame(prices, years)

ここで、消費者物価指数を使用して、これらすべての価格を 2008 年のドルに正規化したいとします。変換値を調べて手動で計算することもできますが、直感的に、これを自動的に実行するパッケージがあると思われます。r-seek と cran で検索しても、明らかな結果は得られませんでした。

誰か何か知っていますか?

ベストアンサー1

CPIデータは以下から入手できます。フレッド関数FREDのメソッドを使用してgetSymbolsクォンタムモッドパッケージ

getSymbols("CPIAUCSL", src='FRED') #Consumer Price Index for All Urban Consumers: All Items
#[1] "CPIAUCSL"
tail(CPIAUCSL)
#           CPIAUCSL
#2012-03-01  229.098
#2012-04-01  229.177
#2012-05-01  228.527
#2012-06-01  228.618
#2012-07-01  228.723
#2012-08-01  230.102

# make an `xts` object of prices
set.seed(1)
p <- xts(rnorm(63, mean=10, sd=3), seq(from=as.Date('1950-12-01'), by='years', length.out=63))
colnames(p) <- "price"

BLS の CPI インフレ計算機

... 特定の暦年の平均消費者物価指数を使用します...現在の年については、最新の月次指数値が使用されます。

(この回答では、上記引用...)

そこで年間平均を計算します

avg.cpi <- apply.yearly(CPIAUCSL, mean)

次に、すべての指数レベルを基準価格で割って変換係数を作成します。

cf <- avg.cpi/as.numeric(avg.cpi['2008']) #using 2008 as the base year
dat <- merge(p, cf, all=FALSE)
dat$adj <- dat[, 1] * dat[, 2]

tail(dat)
#               price  CPIAUCSL       adj
#2006-12-01  8.898336 0.9363693  8.332128
#2007-12-01  6.867596 0.9632483  6.615200
#2008-12-01 11.709159 1.0000000 11.709159
#2009-12-01  9.594836 0.9967933  9.564069
#2010-12-01 17.204853 1.0131453 17.431015
#2011-12-01  9.882280 1.0449769 10.326754

おすすめ記事