これから研究を始める高校生と指導教員のために 第2版
探究活動と課題研究の進め方・論文の書き方・口頭とポスター発表の仕方
(これ研)
副読文書
VI-1. アンケート結果の示し方
選択肢から1つを選んで回答(複数選択が不可)
他のアンケート結果との比較ではなく、
そのアンケート結果における回答の分布を見ることが目的
本章では、以下のようなアンケートの結果のまとめ方を説明します。
・選択肢から1つを選んで回答して貰う(複数選択が不可)。
・そのアンケート結果における回答の分布を見ることが目的。他のアンケート結果と回答の分布を比較するわけではない。
たとえば、○○町の観光推進策を検討するために、基礎情報として、町に観光に行きたいかどうかをアンケートしたとします。このアンケートは、その回答の分布を見て、観光に行きたい人がどれくらいいるのかを知ることが目的です。他のアンケート結果(「○○町の魅力は何か」とか)と比較するようなものではありません。
こうしたアンケートでは、円グラフまたは帯グラフで回答の分布を示します。アンケート間の比較が目的ではないので、その1つのアンケート結果のみを作図します。ただし、類似したアンケートそれぞれについて作図をし、それらを並べて示すこともあります。
作図の仕方を、○○町に観光に行きたいかどうかのアンケート結果(「これ研」には載っていません)を例に説明します。「これ研」の第3部第4章「アンケート結果の示し方」(p. 98)を読んで、アンケート結果の示し方を理解しておいて下さい。
RStudioを起動して下さい。起動方法の詳しい説明は、RStusioの起動の仕方を参照して下さい。そして、作業ディレクトリの指定の説明に従って作業ディレクトリを指定します。
setwd("/Users/sakai/Documents/書籍等原稿/これ研2版/課題研究解析")
# パソコン内での作業ディレクトリの位置がわかっている場合はこの方法が便利です。作業ディレクトリの位置の知り方は作業ディレクトリの表示を参照して下さい。
# あなたの作業ディレクトリの位置を""で囲んで書きます。
# この命令文を実行しておきます。
作図にはtidyverseというものを用います。tidyverseをインストールしてありますか? まだならば、作図の準備の説明に従ってインストールして下さい。インストールしたら、tidyverseをRに読み込みます。
library(tidyverse)
# RStudioを起動しこの命令文を実行しておきます。Rstudio起動後、一度だけ実行すればよいです。Rstudioを終了して再び起動したときは再実行する必要があります。
scalesというものも作図に用います。scalesをRに読み込みます。scalesはRに備わっているので、インストールする必要はありません。
library(scales)
# この命令文を実行しておきます。Rstudio起動後、一度だけ実行すればよいです。Rstudioを終了して再び起動したときは再実行する必要があります。
解析では、データフレームの中の特定のデータ列を指定することを行います。指定の方法です。
データフレーム名$データ列名
# データフレーム名を書き、$を挟んで、指定したいデータ列名を書きます。
# 実行例
d$Angle.degree
d$Flying.distance.m
# データフレームdに入っているデータ列Angle.degree, flying.distance.mを指定します。
1. 解析に用いるcsvファイルのRへの読み込み
googleフォームで、○○町に観光に行きたいかどうかのアンケート(画面1)を行ったとします。
画面1
このアンケート結果を、csvファイル「Visit.csv」(画面2)に保存しました(架空データです)。Rで解析作図をするために英語にしています。町に観光に行きたいか(Visit)に対して、「強くそう思う(Strongly agree)」「そう思う(Agree)」「どちらとも言えない(Neutral)」「思わない(Disagree)」「まったく思わない(Strongly disagree)という回答を書いています。このcsvファイルのデータを使って作図を行います。
画面2
このcsvファイルをダウンロードして、あなたの作業ディレクトリに入れて下さい(作業ディレクトリの指定を参照)。
ご自身のデータを用いる場合は、そのデータが入ったcsvファイルを作業ディレクトリに入れて下さい。Excelで作ったファイルをcsvファイルに変換する方法は、Excelで作った解析用ファイルのcsv形式での保存を参照して下さい。
csvファイルをRに読み込み、データフレームに格納します。
d <- read.csv("Visit.csv")
# csvファイル「Visit.csv」を読み込んでデータフレームdに格納します。ファイル名を""で囲みます。ファイル名の拡張子「.csv」も忘れずに書きます。
# データフレームの名称(この例ではd)はお好みのものでよいです。
2. 作図
tidyverseとscalesを使っての作図の仕方を説明します。これらをRに読み込んでいますか? 読み込んでいない場合は、tidyverseのRへの読み込みとscalesのRへの読み込みを実行して読み込んで下さい。
作図の命令文の基本です。
ggplot(データフレーム名, aes(データ)) +
geom_描く図の英語名() +
書式の命令文 +
書式の命令文
# ggplotで、用いるデータを指定します。
# geom_で、描く図を指定します。
# 書式の命令文を+で繋げます。いくつでも繋げることができます。最後の命令文の後に+は不要です。
2.1. 円グラフの作図
円グラフの作図の仕方を説明します。画面2のデータを使って、○○町に観光に行きたいかどうかの回答分布(画面3-1, 3-2)を作図します。
画面3-1
画面3-2
Rでは画面3-1を作図します。この図を、PowerPoint等に読み込んで画面3-2に加工します(Rでもこうした加工は出来るのですが、難しいので、PowerPointでやってしまいましょう)。日本語の論文・プレゼンテーションならば説明文も日本語にします。英語部分は白く塗りつぶすなり切り取るなりして、そこに日本語を書いて下さい。回答(「強くそう思う」等)も円グラフの中に書き込みます。
作図の前に、回答の並び順を指定しておきます。
d$Visit <- factor(d$Visit, levels = c("Strongly agree", "Agree", "Neutral", "Disagree", "Strongly disagree"))
# 回答の並び順を指定します。データフレームd中のデータ列Visitに、○○町に観光に行きたいかどうかの回答の名称が入っています。並べたい順番に回答の名称を書きます。回答は文字情報なので、回答の名称を""で囲みます。
# d$Visitの中身を上書きするためにd$Visitに再格納します。
# この命令を実行しないとアルファベット順に並びます。
円グラフは、帯グラフを描いてから、それを円グラフに変換するという方法で作図します。
# 命令文が続く場合には+で繋げ、最後の命令文の後には+を付けません。
# 必須命令文
ggplot(d, aes(x = "", fill = Visit)) +# データフレームdを指定します。
# 1つの図を描く場合はx軸を指定しません。x = ""とします。xは小文字です。""の中は空です。
# fill = Visitと指定します。この指定により、データ列Visitをy軸として扱います。データ列Visitには、Strongly agree, Agree, Neutral, Disagree, Strongly disagreeという回答が入っています。各回答の数を集計し、回答ごとに色分けをして作図します。
# 末尾の+を忘れないで下さい。
# 帯グラフにおける、作図に用いるデータフレームとデータの指定、および帯グラフの指定;データ列に入っている各項目の数を集計して1つの図を描く場合
geom_bar() +
# 描く図として、まずは帯グラフを指定します。
# 末尾の+を忘れないで下さい。
# 帯グラフにおける、作図に用いるデータフレームとデータの指定、および帯グラフの指定;データ列に入っている各項目の数を集計して1つの図を描く場合
coord_polar(theta = "y", direction = - 1) +
# 円グラフに変換します。
# theta = "y"と指定し、y軸(fill)として指定したVisitを描くようにします。yを""で囲みます。
# direction = - 1は、町に行きたいかどうかへの回答(Strongly agree等)を時計回りに配置するという指定です。データの並び順で指定した順番で時計回りに配置します。これを省略すると反時計回りに配置されます。
# 末尾の+を忘れないで下さい。ただし、以降の命令文を省略する場合は+を付けず、「coord_polar(theta = "y", direction = - 1)」とします。
# 省略してもよい命令文
# 以降の命令文を省略するとデフォルトで自動で描きます。
labs(x = "", y = "Intention to Visit") +
# 図の名称をIntention to Visitにします。x軸の名称は描かず、y軸の名称をIntention to Visitと指定します。名称を""で囲みます。x, yは小文字です。
theme_void() +
# 図の背景色を白にします。余計な軸等も描かせないため、theme_void()を指定します。
theme(axis.title.x = element_text(size = 18))
# 図の名称(Intention to Visit)の文字の大きさを18に指定します。axis.title.xであってaxis.title.yではないので注意してください。
# 出来上がった図(画面3-1)をPowerPoint等に読み込んで加工するために、各回答の割合を計算します。そして(画面3-2)のような図に加工します。PowerPoint等への図の読み込み方は、図の保存・コピーの仕方を参照して下さい。
prop.table(table(d$Visit))
# データフレームdのデータ列Visitに入っている各回答の割合を計算します。
2.2. 帯グラフの作図
帯グラフの作図の仕方を説明します。画面2のデータを使って、○○町に観光に行きたいかどうかの回答分布(画面4-1, 4-2)を作図します。
画面4-1
画面4-2
Rでは画面4-1を作図します。この図を、PowerPoint等に読み込んで画面4-2に加工します(Rでもこうした加工は出来るのですが、難しいので、PowerPointでやってしまいましょう)。日本語の論文・プレゼンテーションならば説明文も日本語にします。英語部分は白く塗りつぶすなり切り取るなりして、そこに日本語を書いて下さい。回答(「強くそう思う」等)も帯グラフの中に書き込みます。
作図の前に、回答の並び順を指定しておきます。横棒の帯グラフにするので、円グラフのときとは逆の順番にします。
d$Visit <- factor(d$Visit, levels = c("Strongly disagree", "Disagree", "Neutral", "Agree", "Strongly agree"))
# 回答の並び順を指定します。データフレームd中のデータ列Visitに、○○町に観光に行きたいかどうかの回答の名称が入っています。並べたい順番に回答の名称を書きます。回答は文字情報なので、回答の名称を""で囲みます。
# d$Visitの中身を上書きするためにd$Visitに再格納します。
# この命令を実行しないとアルファベット順に並びます。
では作図をします。
# 命令文が続く場合には+で繋げ、最後の命令文の後には+を付けません。
# 必須命令文
ggplot(d, aes(x = "", fill = Visit)) +# データフレームdを指定します。
# 1つの図を描く場合はx軸を指定しません。x = ""とします。xは小文字です。""の中は空です。
# fill = Visitと指定します。この指定により、データ列Visitをy軸として扱います。データ列Visitには、Strongly agree, Agree, Neutral, Disagree, Strongly disagreeという回答が入っています。各回答の数を集計し、回答ごとに色分けをして作図します。
# 末尾の+を忘れないで下さい。
# 帯グラフにおける、作図に用いるデータフレームとデータの指定、および帯グラフの指定;データ列に入っている各項目の数を集計して1つの図を描く場合
geom_bar(position = "fill") +
# 描く図として帯グラフを指定します。position = "fill"と指定することで、百分率による作図にします。fillを""で囲みます。この命令文を省略してgeom_bar()すると、各回答の絶対数で作図します。
# 末尾の+を忘れないで下さい。
# 帯グラフにおける、作図に用いるデータフレームとデータの指定、および帯グラフの指定;データ列に入っている各項目の数を集計して1つの図を描く場合
scale_y_continuous(labels = percent) +
# y軸の目盛りをパーセント表記にします。scalesをRに読み込んでおかないとこの命令文を実行できません。この命令文を実行しないと0から1の率で表記します。
# 末尾の+を忘れないで下さい。ただし、以降の命令文を省略する場合は+を付けず、「scale_y_continuous(labels = percent)」とします。
# 省略してもよい命令文
# 以降の命令文を省略するとデフォルトで自動で描きます。
coord_flip() +
# 横棒の帯グラフにします。この命令文を実行しないと縦棒の帯グラフになります。
# 横棒か縦棒かの指定guides(fill = guide_legend(reverse = TRUE)) +
# 図本体右横の凡例の並びを、データの並び順で指定したものと逆順にします。上から、Strongly agree, Agree, Neutral, Disagree, Strongly disagreeの順に並びます。この指定をしないと、Strongly disagree, Disagree, Neutral, Agree, Strongly agreeの順番(データの並び順で指定した順番)に並びます。図本体での並びと合うように、逆順にするかしないかを決めて下さい。
labs(x = "", y = "Percent") +
# 縦軸(横棒にしているので実はx軸)の名称は書かず、横軸(実はy軸)の名称をPercentにします。名称を""で囲みます。x, yは小文字です。
theme_classic() +
# 図の背景色を白にします。
# 図のデザインの指定
theme(
axis.title.x = element_text(size = 18),
axis.text.x = element_text(size = 12)
)
# 文字の大きさを指定します。横軸(横棒にしても、なぜかこちらは横軸がx軸のままです)の名称(axis.title.x)の文字の大きさを18に、目盛り(axis.text.x)の文字の大きさを12に指定します。縦軸(これもy軸のまま)の名称と目盛りは書かないので、それらの文字の大きさも指定しません。
# 出来上がった図(画面4-1)をPowerPoint等に読み込んで加工するために、各回答の割合を計算します。そして(画面4-2)のような図に加工します。PowerPoint等への図の読み込み方は、図の保存・コピーの仕方を参照して下さい。
prop.table(table(d$Visit))
# データフレームdのデータ列Visitに入っている各回答の割合を計算します。