5

ここには、ggplot2を使用して散布図を作成し、nlsを使用してデータを近似し、近似をプロットする方法についての優れた説明があります。

myhist = data.frame(size = 10:27, counts = c(1L, 3L, 5L, 6L, 9L, 14L, 13L, 23L, 31L, 40L, 42L, 22L, 14L, 7L, 4L, 2L, 2L, 1L) )

ggplot(data=myhist, aes(x=size, y=counts)) + geom_point() + 
    geom_smooth(method="nls", formula = y ~ N * dnorm(x, m, s), se=F, 
    start=list(m=20, s=5, N=300)) 

私の質問は、この構造を使用して、その呼び出しから実際のnlsオブジェクトを引き出すことは可能ですか?係数などを知りたいのですが、今のところ、別のnls呼び出しを行わないと係数を取得する方法がわかりません。

4

1 に答える 1

7

私の質問は、この構造を使用して、その呼び出しから実際のnlsオブジェクトを引き出すことは可能ですか?係数などを知りたいのですが。

これは現在、ggplot2では不可能です。ggplot2関数はモデルから予測を返しますが、モデルオブジェクト自体は返しません。nlsしたがって、オブジェクトからオブジェクトを抽出しggplotて係数などを見つけることはできません。

ggplot2とggplot2-devのメーリングリストには2つの関連する議論があります。

https://groups.google.com/d/topic/ggplot2/7tiUB2sjCxM/discussion

https://groups.google.com/d/topic/ggplot2-dev/dLGJnzIg4ko/discussion

簡単な概要:

多くのユーザーがオブジェクトから統計を抽出する機能を求めていggplotますが、開発者はそれを検討していますが、やや反対しているようです。彼らは、ユーザーが視覚化のためにggplot2を使用し、モデリングパラメーターを探索するために適切なモデリング関数を使用することを望んでいます。ただし、Hadleyは、モデルオブジェクトをggplot()呼び出しに渡す機能を実装するというアイデアをサポートしています。したがって、nlsオブジェクトからオブジェクトを抽出しようとする代わりに、次のようにしggplotます。

mod <- nls(y ~ N * dnorm(x, m, s), se = F, start = list(m = 20, s = 5, N = 300), 
        data = myhist)
ggplot(data = myhist, aes(x = size, y = counts)) + geom_point() + 
        geom_smooth(mod) 

そうすれば、モデルを1回呼び出すだけで、好きなことを行うことができ、ggplotオブジェクトを検索して見つける必要がなくなります。しかし、これがいつ実施されるのか、いつ実施されるのかはわかりません。

于 2012-05-23T19:14:58.217 に答える