2

過去 20 年間の時系列データがあります。変数は毎年測定されているので、20 個の値があります。最初の列が年を表し、2 番目の列が値であるタブ区切りファイルがあります。これは次のようになります。

1991 438
1992 408
1993 381
1994 361
1995 338
1996 315
1997 289
1998 261
1999 229
2000 206
2001 190
2002 173
2003 151
2004 141
2005 126
2006 108
2007 99
2008 93
2009 85
2010 77
2011 71
2012 67

今後数年間、2 番目の列の値を推定したいと思います。2 列目の値が減少する速度も低下しているため、線形回帰は使用できないと思います。2 番目の列がゼロに近づくのは何年か知りたいです。私は R を使用したことがないので、タブ区切りファイルからデータを読み取るために使用されるコードを教えていただければ幸いです。

ありがとう

4

2 に答える 2

9

以下は、始めるのに役立つスケッチです。

## get the data
tmp <- read.table(text="1991    438
1992    408
1993    381
1994    361
1995    338
1996    315
1997    289
1998    261
1999    229
2000    206
2001    190
2002    173
2003    151
2004    141
2005    126
2006    108
2007    99
2008    93
2009    85
2010    77
2011    71
2012    67", col.names=c("Year", "value"))

library(ggplot2)

## develop a model
tmp$pred1 <- predict(lm(value ~ poly(Year, 2), data=tmp))

## look at the data
p1 <- ggplot(tmp, aes(x = Year, y=value)) +
  geom_line() +
  geom_point() +
  geom_hline(aes(yintercept=0))

print(p1)

## check the model
p1 +
  geom_line(aes(y = pred1), color="red")

## extrapolate based on model
pred <- data.frame(Year=1990:2050)
pred$value <- predict(lm(value ~ poly(Year, 2), data=tmp),newdata=pred)

p1 +
  geom_line(color="red", data=pred)

この場合、私たちのモデルは、ラインが決してゼロを超えないことを示しています。それが意味をなさない場合は、別のモデルを選択する必要があります。どのモデルを選んでも、データとともに結果をグラフ化して、自分がどれだけうまくいっているかを確認できます。

于 2013-03-20T23:09:16.580 に答える
5

フォーマットされたファイルからデータを読み込むには:

require(utils)  # (make sure you have 'utils' package installed!)
data <- read.table('<filename>', header=FALSE, colnames=c('Year','Value'))

read.tableのマンページを参照してください

データを推定するには:

EDiDirkが言ったように、少し読む必要があります。必要な外挿の種類を決定します。線形(線形外挿の場合はHmisc ::approxExtrap。approxfun内挿を行いますが外挿は行いません)、spline(stats :: splinefunまたはsplinesパッケージ)などsplinefunはおそらく問題ありません。特に時系列の予測については、予測を参照してください(関連するSOの質問も参照する必要があります)。それらのマンページをざっと読んだ後、何かを試してみて、コードを投稿して、行き詰まっている場所を教えてください。もっと応答できます。そうしないと、容赦なく炎上し、質問は「Give metehcodez」として閉じられる可能性があります;-)

于 2013-03-20T22:47:38.787 に答える