月別アーカイブ: 2020年4月
保護中: 2019年度 社会基盤計画学演習 質問コーナー
保護中: Rプログラミング質問コーナー
マルコフ連鎖
- プログラミング演習用 Rscript
- プログラミング演習解答 Rscript.kaitou
- 名古屋市 毎月1日現在の世帯数と人口(全市・区別)のデータ data
- 名古屋市のWebサイトで、このデータについて調べることができます。
- データは、名古屋市がオープンデータとして提供しており、演習用に加工済みです。
R/R studioの導入
R/R studioを使うための準備
- 手順 ※必ず,1,2の手順で行ってください.
1. Rをインストールする
1.CRAN(The Comprehensive R Archive Network)の左のサイドバーから「Mirrors」をクリックし,ミラーサイト一覧にアクセスする.適当なミラーサイトを選ぶ(例:統計数理研究所のミラーサイト: https://cran.ism.ac.jp/ に直接アクセスしても良い).
2.「Download R for Windows」をクリックする.
3.「base」をクリックする.
4.「Download R 4.0.3 for Windows」をクリックする(※R 4.0.3の部分はソフトウェアの更新に伴い,頻繁に変わります.以下,適宜読み替えること).すると「R-4.0.3-2in.exe」という名前のファイル(インストーラー)のダウンロードが開始されますので,適当な場所(デスクトップやダウンロードフォルダなど)に保存します.
5.保存した場所に「R-4.0.3-2in.exe」というファイルがあるはずです.このファイルをダブルクリックし,インストールの実行を開始します.すると,以下のような画面が出ますので「OK」をクリックします.言語は日本語をおすすめします.
6.以下の画面に遷移したら「次へ」をクリックします.
7.以下の画面に遷移したら,何も設定を変えずに,「次へ」をクリックします.
8.自分のパソコンのbit数に応じて選択します.たとえば,64bitのパソコンなら,32bitのチェックは外して構いません.bit数が分からなければ調べてください(調べ方は,たとえばこちらのサイトなどを見ればわかります).
9.以下の画面に遷移したら,何も設定を変えずに「いいえ」のまま,「次へ」をクリックします.
10.何も設定を変えずに「次へ」をクリックします.
11.何も設定を変えずに「次へ」をクリックします.
12.インストールが開始されます.
2. R studioをインストールする
- R studioのWebサイトにアクセスする。
- RStudio Desktop Open Source LicenseのFREE版をインストールする。”Download now”より、自分の計算機のOSに応じてインストーラを選択する。
1.R studioのWebサイトにアクセスする.右上の方にある「DOWNLOAD」をクリック.
2.有料版などもあるが,今回は無料版を使う.一番左のRstudio Desktop Open Source License Freeと書いてあるところの下にある「DOWNLOAD」をクリックする.
3.「2.Download RStudio Desktop. Recommended for your system:」と書いてあるところの下に青いボタン(DOWNLOAD RSTUDIO FOR WINDIWS)があるので,それをクリック.ダウンロードが開始されるのでRと同様適当なところに保存し,インストーラファイルをクリックする.
4.セットアップが始まるので「次へ」をクリックする.
5.何も設定を変えず,そのまま「次へ」をクリックする.
6.何も設定を変えず,そのまま「次へ」をクリックする.
7.セットアップが始まるので,しばらく待機する.インストールが完了したら「完了」をクリックする.
8.パソコンの画面の左下の検索で「Rstudio」と入力する.すると,Rstudioのアプリが出てくるので,クリックして立ち上げる.
9.以下の画面が起動したら成功です.
10.もし,左上のUntitledと書いたタブが出ていなければ,左上の以下のアイコンをクリックし「R script」を選択すると出てきます.
以上で準備は終わりです.次は「プログラムを動かしてみる」です.
参考(手を動かしてみたい人用):
- 入門編演習用プログラム Rscript
地理空間情報の可視化
◆地理空間データの入手と準備
ライブラリのインストール
画面上で,Packagesタブ→installから「maptools」を入力してインストールすることもできます.
install.packages("maptools")
library(maptools)
ワーキングディレクトリの設定
現在,Rが使用しているワーキングディレクトリがどこなのかをきちんと把握しておくことは非常に重要です.ダウンロードしたファイルをそのまま「ダウンロードフォルダ」等に入れっぱなしにしておくと,あとで場所がわからなくなったり,プログラムが動かなかったりします.
以下のコマンドで,現在のワーキングディレクトリを確認できます.
getwd()
ワーキングディレクトリを変えたければ,setwd()を使います.「 C:XXXX/XXXXX/XXX 」には利用したいフォルダのパスを入れてください.
setwd("C:XXXX/XXXXX/XXX")
基盤となる白地図データの入手
シェープファイルをダウンロードします.
- Natural Earth にアクセスして,Get the data -> Large scale data, 1:10m -> Physical -> Land -> Download landの順にクリックします.
- “ne_10m_land.zip”というzipファイルをダウンロードします.その際,先ほど作成した 「 C:XXXX/XXXXX/XXX 」 の下にフォルダ「data」を作って,そこで解凍することをお勧めします.解凍されるとフォルダ内に7つのファイルが出現するはずです.
問1 データの測地系:このデータの測地系は何か?「ne_10m_land.prj」ファイルの中を見て確認してみよう.また,この測地系について,日本測地系との違いを説明してみよう.
コロナウイルス感染者データの入手
- 都道府県別新型コロナウイルス感染者数マップ URL の画面左上から,発表された症例一覧のCSVファイルをダウンロードします(※データの更新は2020年11月で止まっていますが,2023年1月現在,ダウンロードすることは出来ます).このデータを「data」 フォルダに格納します.
- 「定義(Readme&FAQ)」から,データの内容,定義について確認しておいてください.
都道府県県庁所在地の緯度経度データの入手
世界測地系(WGS84)による都道府県庁所在地の緯度経度データを入手する(URL).セルが結合されている等,Rでは読み込めない形式になっているので,今回はあらかじめ形式を整えたデータを下記からダウンロードして使ってください.
latlng_data2.xlsxの説明
自治体コード | 自治体コード |
都道府県名 | 都道府県名 |
市区名 | 県庁所在地のある市区名 |
緯度 | 世界測地系(WGS84) による緯度 |
経度 | 世界測地系(WGS84) による経度 |
日本測地系緯度経度 | 日本測地系の 緯度経度(カンマ区切り) |
◆地理空間データの可視化
データの読み込み
白地図,コロナウイルス感染者データ,県庁所在地の緯度経度データの3つを読み込んでいきます.
白地図の読み込みは以下のコマンドを使います.
world <- readShapePoly("ne_10m_land.shp")
plot()でどのようなデータか,確認してみます.
plot(world)
問2 日本近辺だけ表示する:現状のままだと,世界中の地図が表示され,かなり広い範囲になってしまいます.日本近辺だけに絞って表示してみましょう.引数「 xlim 」「ylim」に経度,緯度の範囲を表すベクトルを与えることで範囲が指定できます.plot() 内で用いられている「lonlim」と「latlim」に適当な値を付値してみよう.
※日本の国土がおよそいくらの緯度,経度の範囲に入るかはこちらで確認できます.
lonlim = c(125,155) #日本の国土を覆う経度
latlim = c(25,45) #日本の国土を覆う緯度
plot(world,xlim=lonlim, ylim=latlim)
コロナウイルス感染者データと県庁所在地の緯度経度データを読み込みます.
問3 感染者数データの読み込み:関数read.csv()を使って,「COVID-19.csv」を読み込み,「 COVID19 」というオブジェクトに付値してみましょう.
COVID19 <- read.csv("COVID-19.csv")
「 COVID-19 」にデータが格納されているか,確認します.
COVID19
問4 県庁所在地のデータを読み込み:「latlng_data2.xlsx」を読み込み,「 Kencho 」というオブジェクトに付値してみましょう.
エクセルを読み込むためには,まずパッケージをインストールし,読み込みます.
install.packages("readxl")
library(readxl)
readxlのパッケージ内にあるread_excel()関数を使ってデータを読み込みます.
Kencho <- read_excel("latlng_data2.xlsx")
データの集計
COVID19は,1つのレコードに感染者1名分のデータが入っています.これを,都道府県ごとに集計してみます.
まずは,下記のコードを入力してみてください.
table(COVID19$受診都道府県)
問5 table関数:table()関数がどのような関数か,説明してみましょう.上記の関数の実行結果を「 PrefConsult 」というオブジェクトに付値してください.さらに, 「 PrefConsult 」 のデータ構造を確認してください.
PrefConsult <- table(COVID19$受診都道府県)
class(PrefConsult)
問6 data.frame型に変換する:as.data.frame(オブジェクト)でオブジェクトのデータ型を data.frame型に変換することができます.data.frame型に変換し,「PrefConsultdf 」に付値したうえで,class()で実行できているか確かめてください.
PrefConsultdf <- as.data.frame(PrefConsult)
class(PrefConsultdf)
二つのエクセルデータの結合
都道府県名が同じデータが同じ行になるように,テーブル結合をしてみます.以下のコマンドを実行し,結果を「latlngConsult」に付値してください.
merge(PrefConsultdf, Kencho, by.x="Var1", by.y="都道府県名", all=T)
latlngConsult <- merge(PrefConsultdf, Kencho, by.x="Var1", by.y="都道府県名", all=T)
問7 関数 merge(): 関数 merge() はどのような関数でしょうか?説明してみよう.
地図への表示
まずは,白地図を表示してみます.以下のコマンドを入力してください.日本地図が表示されるはずです.
plot(world, xlim=lonlim, ylim=latlim, axes=TRUE, xlab="Longitude", ylab="Latitude")
次に,この白地図にコロナウイルス感染者データの PrefConsult を重ね合わせてみます. PrefConsult は,「受診都道府県」を都道府県別に数を数えたものです.以下のコマンドを入力してみてください.
points(latlngConsult$経度,
latlngConsult$緯度,
pch=20,
lwd=3,
col="red")
では,次のコマンドを入力するとどうなるでしょうか?
このコードでは感染者数が多い都道府県の丸が大きくなるように表示されます.
points(latlngConsult$経度,
latlngConsult$緯度,
pch=20,
lwd=(latlngConsult$Freq),
col="red")
問7 plot結果は,なぜ真っ赤になったのか?:上記のコマンドを入力すると,真っ赤な画面が現れます.なぜこうなったのか,考察し,解決策を示してください.
ヒント:x軸は経度,y軸は緯度,pchはマーカーのタイプ(●や△など)を表します.lwdは線分の幅で,値が大きいほど太くなります.「latlngConsult$Freq」はCOVID19データの受診都道府県を都道府県別に集計したものです.colは,マーカーの色を表します.
(参考)グラフィックス参考実例集:カラーパレット – RjpWiki, URL, 2020.4アクセス.