15

基本的な問題は、関数係数に異なる値を使用して、ggplot の同じ図に多数 (1000) のカスタム関数を追加する方法を理解したいということです。1000 ではなく 2 つまたは 3 つの関数を追加する方法に関する他の質問と、異なる関数形式で追加することに関する質問を見てきましたが、パラメーターに複数の値を持つ同じ形式ではありません...

目標は、データ フレームに格納されているパラメーター値を使用して stat_function に線を描画させることですが、x の実際のデータはありません。

[ここでの全体的な目標は、小さなデータセットからの非線形回帰のモデル パラメーターの大きな不確実性を示すことです。これは、このデータからの予測に関連する不確実性につながります (これは悪い考えだと誰かに納得させようとしています)。 )。私はよく、モデル パラメータの不確実性から構築された多くの線をプロットすることによってこれを行います (アンドリュー ゲルマンの多レベル回帰の教科書に似ています)。]

例として、ベース R グラフィックスのプロットを次に示します。

#The data
p.gap <- c(50,45,57,43,32,30,14,36,51)
p.ag <- c(43,24,52,46,28,17,7,18,29)
data <- as.data.frame(cbind(p.ag, p.gap))

#The model (using non-linear least squares regression):
fit.1.nls <- nls(formula=p.gap~beta1*p.ag^(beta2), start=list(beta1=5.065, beta2=0.6168))
summary(fit.1.nls)

#From the summary, I find the means and s.e's the two parameters, and develop their distributions:
beta1 <- rnorm(1000, 7.8945, 3.5689)
beta2 <- rnorm(1000, 0.4894, 0.1282)
coefs <- as.data.frame(cbind(beta1,beta2))

#This is the plot I want (using curve() and base R graphics):
plot(data$p.ag, data$p.gap, xlab="% agricultural land use",
     ylab="% of riparian buffer gap", xlim=c(0,130), ylim=c(0,130), pch=20, type="n")
for (i in 1:1000){curve(coefs[i,1]*x^(coefs[i,2]), add=T, col="grey")}
curve(coef(fit.1.nls)[[1]]*x^(coef(fit.1.nls)[[2]]), add=T, col="red")
points(data$p.ag, data$p.gap, pch=20)

ggplot のデータを使用して平均モデル関数をプロットできます。

fit.mean <- function(x){7.8945*x^(0.4894)}
ggplot(data, aes(x=p.ag, y=p.gap)) +
  scale_x_continuous(limits=c(0,100), "% ag land use") +
  scale_y_continuous(limits=c(0,100), "% riparian buffer gap") +
  stat_function(fun=fit.mean, color="red") +
  geom_point()

しかし、ggplot で複数の行を描画することは何もありません。ggplot Web サイトまたはこのサイトの関数のパラメーター値を描画する際の助けを見つけることができないようですが、どちらも通常非常に役立ちます。これは、誰も敢えてこれを行うことができないという十分なプロット理論に違反していますか?

どんな助けでも大歓迎です。ありがとうございました!

4

2 に答える 2