9

二項分布の密度関数を描画するには独自の関数を作成する必要があるため、n = 20 および p = 0.1,0.2,...,0.9 の場合に適切なグラフを描画します。また、グラフにコメントする必要があります。

私はこれを試しました;

   graph <- function(n,p){
               x <- dbinom(0:n,size=n,prob=p)
               return(barplot(x,names.arg=0:n))
            }


   graph(20,0.1)
   graph(20,0.2)
   graph(20,0.3)
   graph(20,0.4)
   graph(20,0.5)
   graph(20,0.6)
   graph(20,0.7)
   graph(20,0.8)
   graph(20,0.9)

   #OR
   graph(20,scan())

私の最初の質問:graph(20,p)を使用する以外に、行を何度も書き留める必要がないようにする方法はありますscan()か?

私の2番目の質問:

あるデバイスでグラフを見たい、またはENTER次のグラフを見るためにヒットしたい。私が書いた

   par(mfcol=c(2,5))
   graph(20,0.1)
   graph(20,0.2)
   graph(20,0.3)
   graph(20,0.4)
   graph(20,0.5)
   graph(20,0.6)
   graph(20,0.7)
   graph(20,0.8)
   graph(20,0.9)

しかし、グラフが小さすぎます。mtext()見出し行 n=20 と p=グラフを描画するために使用した値を指定してグラフをうまく表示するにはどうすればよいですかgraph?回。だから私はこれを関数に含めたいと思っていますgraph。]

私の最後の質問:

コメントについて。グラフは、成功の確率 p が増加するにつれて、グラフが右に傾いていること、つまり、グラフが右に歪んでいることを示しています。

を使用してグラフにコメントする方法はありますprogramか?

4

2 に答える 2

8

mapplyこれは、2 つの変数をループするための作業です。

graph <- function(n,p){
  x <- dbinom(0:n,size=n,prob=p)
  barplot(x,names.arg=0:n,
         main=sprintf(paste('bin. dist. ',n,p,sep=':')))
}
par(mfcol=c(2,5))
  mapply(graph,20,seq(0.1,1,0.1))

ここに画像の説明を入力

于 2013-07-20T09:51:04.267 に答える
2

forベース グラフィックスのプロットは、ループを頻繁に使用する場合の 1 つです。その理由は、ほとんどのプロット関数が目に見えないオブジェクトを返すためですが、これらには関心がありません。あなたが望むのは、プロットの副作用だけです。ループは返されたオブジェクトを無視しますが、*applyファミリはオブジェクトを収集して返すために労力を無駄にします。

par(mfrow=c(2, 5))
for(p in seq(0.1, 1, len=10))
{
    x <- dbinom(0:20, size=20, p=p)
    barplot(x, names.arg=0:20, space=0)
}
于 2013-07-20T12:49:42.153 に答える