2016-05-16 3 views
0

私は100853の観測値を持つ大きなデータセットを持っています。私のモデルでは、1人当たり支出(ln_MPCE)のログと食糧に費やされた支出(w_food)の2つの変数の関係を特定したいと考えています。これを行うために、私は二次回帰と非パラメトリック回帰を実行します。次に、次のコードを使用してデータと近似値をプロットします。しかし、グラフはちょうどプロットされていません。 2つの曲線を得る代わりに、私は両方の回帰のための線の束を得る。私が間違っているところを教えてください。あなたの助けを前にありがとう。何が起こっているRを線で近似した回帰フィッティング値のプロットは右に回らない。

model.par <- lm(w_food~ ln_MPCE+ I(ln_MPCE^2), data=share_efm_food_09) 
summary(model.par) 
library(np) 
model.np <- npreg(w_food~ ln_MPCE, regtype="ll",bwmethod="cv.aic",data=share_efm_food_09) 

pdf("food_Ln_MPCE_curve.pdf" , width=11, height=8) 
plot(share_efm_food_09$ln_MPCE, share_efm_food_09$w_food, xlab="ln_MPCE",ylab="w_food", cex=.1) 
lines(share_efm_food_09$ln_MPCE, fitted(model.np), lty=1, col="blue") 
lines(share_efm_food_09$ln_MPCE, fitted(model.par), lty=1, col="red") 
dev.off() 
+2

あなたは最小限のいくつかの並べ替え、[再現性の例](http://stackoverflow.com/questions/5963269/how-to-makeを提供しようとすべきです-a-great-r-reproducible-example)にはサンプル入力データが含まれているため、コードを実行して何が起こっているかを確認できます。 – MrFlick

答えて

2

はラインが前後に行くように、データは次のX値は、データフレームの現在の順序であることを起こる場所に応じて、x値によってソートされていないということです。データフレームをx値で注文して、期待していた線を取得します。ここで

はと例の内蔵 mtcarsデータフレーム:デフォルトの順序で

m1 = lm(mpg ~ wt + I(wt^2), data=mtcars) 

プロットデータ:

with(mtcars, plot(wt, mpg)) 
lines(mtcars$wt, fitted(m1), col="blue") 

enter image description here

wtによってソートされたデータと予測行を追加します。 :

newdat = data.frame(wt=mtcars$wt, mpgpred=fitted(m1)) 
newdat = newdat[order(newdat$wt),] 

lines(newdat, col="red", lwd=4) 

enter image description here

むしろfittedを使用するよりも、あなたはまた、独立変数の値の任意の組合せのためにあなたのモデルから予測値を返します。これは、predictを使用することができます。その後、wtによってソートされた元のデータフレームを提供することができます。

m1 = lm(mpg ~ wt + I(wt^2), data=mtcars) 

with(mtcars, plot(wt, mpg)) 
lines(mtcars$wt[order(mtcars$wt)], predict(m1, newdata=mtcars[order(mtcars$wt),]), col="red") 
+0

ありがとうeipi、あなたロック:-) – Ridhima

関連する問題