2017-09-27 14 views
0

次のコードでは、関数呼び出しでxinterceptの値(3と0)にハードコードする必要がないように、normal1とnormal2の平均値を取得しようとしています。ドームの平均値を取得する

normal1 <- function(x) { 
    dnorm(x, 3, 3) 
} 

normal2 <- function(x) { 
    dnorm(x, 0, 2) 
} 

plot + stat_function(fun = normal1) + 
     stat_function(fun = normal2) + xlim(c(-10, 15)) + 
     geom_vline(xintercept = 3, linetype = "dashed") + 
     geom_vline(xintercept = 0, linetype = "dashed") 

私は前方の変数を宣言し、初期dnormコールでそれらを使用することなく、そうしたいと思います。 ie

x1 <- 3 
x2 <- 0 

normal1 <- function(x) { 
    dnorm(x, x1, 3) 
} 

normal2 <- function(x) { 
    dnorm(x, x2, 2) 
} 

私はRにとって新しく、その機能やリターンを強く把握していません。

+1

あなたは 'plot'が何であるかの最小限の実例を与えることができますか? –

+0

ああ、ありがとう、あなたのコメントは、私が使っていた 'plot'が、コードから削除されたコンソールのメモリ内の変数であることを実感しました。 'plot < - ggplot(x、aes(x))' – Kebtiz

+0

ありがとうございました。その間に、答えがあり、良いことがありましたら、私はテストの後にそれをupvotedしました。おそらくあなたはそれを受け入れなければならないので、同じような問題があれば他の人が将来見つけることができます。 –

答えて

2

たぶん、あなたはこの

plotter <- function(m1,m2){ 
    normal1 <- function(x) { 
    dnorm(x, m1, 3) 
    } 

    normal2 <- function(x) { 
    dnorm(x, m2, 2) 
    } 
    ggplot(data = data.frame(x=0), mapping = aes(x=x))+ 
    stat_function(fun = normal1) + 
    stat_function(fun = normal2) + xlim(-10, 15) + 
    geom_vline(xintercept = m1, linetype = "dashed") + 
    geom_vline(xintercept = m2, linetype = "dashed") 


} 

ですから、再計算することができNORMAL1とNORMAL2機能のようなものを試してみてください。実際、それらは可変の平均で作成されます。新しい値でプロットを変更するのは簡単です。

m_1 <- 4 
m_2 <- 2 

plotter(m_1, m_2) 

または、新しい値で直接plotter()関数を実行します。必ずしもその作成のための平均値を必要とする機能の平均を計算することで


エクスカーション

は、少し混乱が、不可能ではありません。

まずplotter関数を少し変更します

normal1 <<- function(x) { 
    dnorm(x, m1, 3) 
} 
normal1

ので、関数はplotter関数外利用可能です。

ここで、関数の平均値または期待値は、密度の曲線の下の領域と変数自体を掛け合わせたものと一致しています。

mean1 <- function(x){ 
normal1(x)*x 
} 

ここで、normal1は濃度と解釈される。

mean1_empirical <- integrate(mean1, lower = -Inf, upper = Inf) 

m_1 <- 4のために結果はたとえばのために、ある(!):

4 with absolute error < 0.00019 

ご注意:既存の機能で、このメソッドを使用すると、実証的アプローチです。したがって、最小限の微分で結果を受け取ることは可能ですが、もちろん精度は高いです。

+0

それは私がやっていたよりもきれいで、このインスタンスでうまくいきますが、事実の後で実際に平均を抽出する方法を期待していました。ですから、私が裸のプロットを通過すると、 'geom_vline'を追加することができます。 – Kebtiz

+1

@Kebtiz、私は小旅行で少し助けてくれることを願って –

+0

はい、ありがとうございます。この例はとても役に立ちました。 – Kebtiz

関連する問題