対数関係にあると思われるデータポイント (x と y) がいくつかあります。
> mydata
x y
1 0 123
2 2 116
3 4 113
4 15 100
5 48 87
6 75 84
7 122 77
> qplot(x, y, data=mydata, geom="line")
3
ここで、グラフに適合し、他のデータポイント (または)を推測できる基になる関数を見つけたいと思います82
。私はについて読みましたがlm
、nls
実際にはどこにも行きません。
最初に、プロットに最も似ていると思われる関数を作成しました。
f <- function(x, a, b) {
a * exp(b *-x)
}
x <- seq(0:100)
y <- f(seq(0:100), 1,1)
qplot(x,y, geom="line")
その後、以下を使用してフィッティング モデルを生成しようとしましたnls
。
> fit <- nls(y ~ f(x, a, b), data=mydata, start=list(a=1, b=1))
Error in numericDeriv(form[[3]], names(ind), env) :
Missing value or an Infinity produced when evaluating the model
ここから何をすべきかについて、誰かが私を正しい方向に向けることができますか?
ファローアップ
あなたのコメントを読み、もう少しグーグルで調べた後、 の開始パラメータを調整するとa
、突然モデルが収束しました。b
c
fit <- nls(y~f(x,a,b,c), data=data.frame(mydata), start=list(a=1, b=30, c=-0.3))
x <- seq(0,120)
fitted.data <- data.frame(x=x, y=predict(fit, list(x=x))
ggplot(mydata, aes(x, y)) + geom_point(color="red", alpha=.5) + geom_line(alpha=.5) + geom_line(data=fitted.data)