2016-05-16 10 views
1
私はこのデータを、データフレーム fit1持っ

rに最適なフィッティングを見つけるには?

fit1 

x y 
1 0 2.36 
2 1 1.10 
3 2 0.81 
4 3 0.69 
5 4 0.64 
6 5 0.61 

は、私はデータの最良指数フィット見つけるだろう: 私はggplotでstat_smoothで試してみましたが、コードは次のとおりです。

p_fit <- ggplot(data = fit1, aes(x = x, y = y)) + 
    stat_smooth(method="glm", se=TRUE,formula=y ~ exp(x),colour="red") + 
    geom_point(colour="red",size=4,fill="white",shape=1)+ theme_bw()+theme(panel.border = element_blank(), panel.grid.major = element_blank(), 
                     panel.grid.minor = element_blank(), axis.line = element_line(colour = "black")) 
p_fit + geom_text(colour="blue",x = 0.25, y = 1, label = lm_eqn(fit1), parse = TRUE)+annotate("text",label=pval,x=0.9,y=0.3) 

と結果は: enter image description here

ですが、私が見つけたものではありません。私の指数関数的フィットは最初の点(x = 0)から始まり、すべての点に適合するべきです(可能であれば最適フィット) どうすればいいですか?

+1

私は他の選択肢のカップルを示してきました下にモデルフィッティングの助けが必要な場合は、プログラミング上の質問ではなく統計的な質問ですので、よりよく尋ねられます[stats.se]で終わりました。 – MrFlick

+0

また、この[post](http://stackoverflow.com/questions/1181025/goodness-of-fit-functions-in-r)を見ると便利かもしれません。 – lmo

答えて

2

主な問題はy~exp(-x)が必要なことです。これはモデルy=a+b*exp(-x)に適合します。代わりにy~exp(x)を指定すると、減少するのではなく指数関数的にの成長がに収まるようにしようとしています。 (nls付き)y=a*exp(b*x)glm(.,family=gaussian(link="log"))付き)とy=a+b*exp(c*x)

取得データ:

fit1 <- read.table(header=TRUE,text=" 
x y 
1 0 2.36 
2 1 1.10 
3 2 0.81 
4 3 0.69 
5 4 0.64 
6 5 0.61") 

様々なフィット:

library(ggplot2) 
ggplot(fit1,aes(x,y))+geom_point()+ 
    geom_smooth(method="glm",se=FALSE, 
       method.args=list(family=gaussian(link="log")))+ 
    geom_smooth(method="nls",se=FALSE, 
       formula=y~a+b*exp(-c*x), 
       method.args=list(start=list(a=0.6,b=1.5,c=1)), 
       colour="red")+ 
    geom_smooth(method="lm",se=FALSE, 
       formula=y~exp(-x), 
       colour="purple") 

enter image description here

+0

ありがとう、しかし、私は方程式、stat_summaryを見ることができますか? – Diego

+0

私は分かりません。 http://stackoverflow.com/questions/7549694/ggplot2-adding-regression-line-equation-and-r2-on-graphから 'lm_eqn'を取っているようです。あなたはあなたの方程式にそれを適応させることができます。 –

関連する問題