Rのggplot2を用いて作図する方法を説明します。
要約
Rでこのようなグラフを作れます。


パッケージの準備
ggplot2はRにもともと入っている機能ではありません。インストールして、呼び出しする必要があります。
install.packages("ggplot2") #インストール(初回のみ)
library(ggplot2) #読み出し(RStudio起動のたびに)
関数の作図
(1)作図
以下のコードを実行すると、関数の描画ができます。
#データフレームを用意
data_0 <- data.frame(X = x <- seq(0,4,0.1)) #0から4まで、0.1ずつ数字を作り、xに代入し、それをXとする
#関数の作成
func_1 <- function(x) (x-1)*(x-3) #二次関数y=(x-1)(x-3)を作る。コードでは「*」を忘れないように
#描画
ggplot(data = data_0, aes(x = X))+ #data0の範囲、横軸にXを表示
stat_function(fun = func_1) #関数func_1を描画
下図の二次関数のグラフが出力されます。

(2)色塗り
以下のコードを実行すると、関数の描画と色塗りができます。
data_0 <- data.frame(X = x <- seq(0,4,0.1)) #関数の出力範囲を0〜4
data_1 <- data.frame(X = x <- seq(1,3,0.1)) #色塗りの範囲を1〜3
func_1 <- function(x) (x-3)*(x-1) #二次関数
ggplot(data = data_0, aes(x = X))+
stat_function(fun = func_1)+
geom_ribbon(data=data_1,aes(x=X, ymin=0, ymax=func_1(x))) #geom_ribbonで色塗り。x=XでXを横軸に指定。ymin=0とymax=func_1(x)で、0とfunc_1の間を色塗り。

なお、fillやalphaを指定すると、カラフルにできます。↓
ggplot(data = data_0, aes(x = X))+
stat_function(fun = func_1)+
geom_ribbon(data=data_1,aes(x=X, ymin=0, ymax=func_1(x)), fill="green",alpha=0.3) #fill="色の名前" alpha=透明度
例えば、緑の透明度0.3ですと、こんな感じです。

作図の例
(1)二次関数で囲まれた領域
data_0 <- data.frame(X = x <- seq(0,4,0.1)) #関数の出力範囲を0〜4
data_1 <- data.frame(X = x <- seq(1,3,0.1)) #色塗りの範囲を1〜3
func_1 <- function(x) (x-3)*(x-1) #二次関数1
func_2 <- function(x) -(x-3)*(x-1) #二次関数2
ggplot(data = data_0, aes(x = X))+
stat_function(fun = func_1)+
stat_function(fun = func_2)+
geom_ribbon(data=data_1,aes(x=X, ymin=func_2(x), ymax=func_1(x)), fill="green",alpha=0.3) #yminとymaxでそれぞれの関数を指定

(2)確率密度関数
正規分布は↓
data_0 <- data.frame(X = x <- seq(-4,4))
ggplot(data = data_0, aes(x = X))+
stat_function(fun = dnorm, args=list(mean=1, sd=1)) #母平均1、標準偏差1
t分布は↓
data_0 <- data.frame(X = x <- seq(-4,4))
ggplot(data = data_0, aes(x = X))+
stat_function(fun = dt,args=list(df=3)) #自由度3
カイ二乗分布は↓
data_0 <- data.frame(X = x <- seq(0,20))
ggplot(data = data_0, aes(x = X))+
stat_function(fun = dchisq, args=list(df=5)) #自由度5
F分布は↓
data_0 <- data.frame(X = x <- seq(0,5))
ggplot(data = data_0, aes(x = X))+
stat_function(fun = df,args=list(df1=10,df2=10)) #自由度(10,10)
(3)有意水準の図示
次のようにコーディングして
a <- 0.05 #有意水準を0.05に設定
#自由度5のカイ二乗統計量でP値が0.05になる数値を求めてqとする
b <- 1- a #累積分布
q <- qchisq(b,5) #11.07が
#描画
ggplot(data = data.frame(X = c(0, 20)), aes(x = X))+ #0から20を描画
stat_function(fun = dchisq, args=list(df=5))+
geom_ribbon(data=data.frame(X=x<-seq(0,q,len=101), Y=dchisq(x,5)),aes(x=X, ymin=0, ymax=Y),fill="green",alpha=0.3)+ #0から11.07を緑
geom_ribbon(data=data.frame(X=x<-seq(q,20,len=101), Y=dchisq(x,5)),aes(x=X, ymin=0, ymax=Y),fill="red",alpha=0.6) #11.07から20を赤
下図の赤の面積が0.05(有意水準)です。

コメント欄 お気軽にコメントをお寄せください!