2017-02-26 11 views
0

私はR(STATA難民)との相対的な初心者です。データフレーム内のすべての観測結果を予測して追加するモデルを適用するにはどうすればよいですか?

私はデータフレームを持っていますが、その観測は個々人です。私はまた、年齢別の年金残高のモデルを持っています。私は年齢(誕生日の年齢)に基づいて、各人に予測された退職年金残高を追加したいと思います。 モデルは、年齢によって年金残高のためのグループ化された平均データを滑らかにするために建設された。

library(mgcv) 
# Age bracket mid-points 
x = seq(22, 62, 5) 

# Male age-bracket super balance medians 
y = c(6, 21, 42, 65, 75, 110, 137, 150, 230) 

# Model the super as a function of age bracket 
mod = gam(y ~ s(x, k = 8), family = Gamma(link = "log")) 

# Predict the super balance for each age 
pred = cbind(Age = 20:64, Super = predict(mod, data.frame(x = 20:64), "response")) 

# Plot raw data and predictions for each year 
plot(y ~ x, xlim = c(20, 64), ylim = c(0, 250), las = 1) 
points(pred, col = "red") 

私も年齢そのうちの1つは、多くのベクトルを、持っている別のデータフレーム、年齢を、持っています。私がしたいのは、このデータフレームに新しいベクタを追加してmodを使って年齢に基づいてその年金の残高を予測することです。たとえば、データフレーム(ない私の実際のデータ)として :

age=data.frame(seq(25,51,2)) 

代替がデータフレームPREDを使用し、適切な年齢の行からスーパーに関連する値を読み取ると年齢にそれを追加することです

残念ながら、私はこれらのことをどうやって行うのか分かりません。私は年齢以上のモデルの予測を実行するためにvapply()を使用する方法がなければならないと考えましたが、動作させることはできませんでした。 私も試してみましたCBIND():

cbind(age,y = predict(mod, newdata = age)) 

はなく、私には一致しませんでした行の番号を伝えるエラーを得ました。 ご迷惑をおかけして申し訳ございません。

答えて

0

あなたは予測の出力が配列

cbind(age,y = predict(mod, newdata = age)) 

にベクトル/アレイへのデータフレームをバインドしようとしている。

> class(predict(mod, data.frame(x = 20:64))) 
[1] "array" 

ですから、次のようなSTHを使用する必要があります。

New <- data.frame(age=seq(25,51,2)) 

pred <- cbind(Age = New$age, newdata = predict(mod, data.frame(x = New$age), "response")) 

OR

pred <- cbind(Age = seq(25,51,2), newdata = predict(mod, data.frame(x=seq(25,51,2)), "response")) 
+0

ありがとうOmaymaS、私は答えがかなりシンプルになると思っていたが、私はちょうどヘルプファイルからそれを掘り下げることができなかった。あなたの最初の提案は治療になりました。 – user3571339

関連する問題