#install.packages("readxl") これはすでにインストールされています。
#library(readxl)
#koujitika <- read_excel("11_R7kouji_chiten_data_excel.xls", sheet = "地点一覧",skip = 1)
skip = 1です。koujitika)としてRに取り入れたことを意味します。 1.
Rコマンドの区切りは改行です。改行すれば、1つのコマンドが終了したと認識されます。実行する際はその行をアクティブ化してrunをクリックします。1行に複数のコマンドを書きたいときは
; で区切ります。
2. #
はコメントの開始として扱われ、行頭に#を書くとその行すべてがコメントとして扱われます。行の途中に#
を書くと、#
以降がコメントとして扱われます。何をやっているコマンドか書いておくには重要です。
3. インストール済みのパッケージを利用するときは、library(“パッケージ名”) とします
# 必要なパッケージのインストール (初回のみ)
#install.packages("sf")
#install.packages("writexl")
#library(sf)
#library(writexl)
# シェープファイルからのデータ読み込み。このままRデータとして使うことも可能です。
#koujitika2<- read_sf("L01-23_13_GML/L01-23_13.shp", options="ENCODING=CP932")
# csvで保存:write.csv("保存するデータ名", "保存場所")
#write.csv(koujitika2, "koujitika2.csv")
# excelで保存:write_xlsx("保存するデータ名", "保存場所")
#write_xlsx(koujitika2, "landprice.xlsx")
#必要なパッケージのインストール
# install.packages("dplyr")
#library(dplyr)
#koujitika <- rename(koujitika, "当年価格" ="当年価格(円)","地積面積" ="地積(㎡)", "最寄り駅" ="主要交通施設","最寄り駅までの距離" ="交通施設までの道路距離(m)")
# 駅データ.xlsxをstationdataをデータセットとして読み込む
#stationdata <- read_excel("駅データ.xlsx", sheet = "距離・時間")
# データをマージします。
#koujitika_merge<- merge(koujitika, stationdata, by="最寄り駅", all=T)
これは、データオブジェクトkoujitikaにデータオブジェクトファイルstationdataを変数最寄り駅でマージさせるコマンドです。
データオブジェクトkoujitika_mergeの構造を出力させてみましょう。路線,便数,が追加されていることを確認してください。
データのマージとは複数のデータ(プログラムをマージするときもあります)を統合することです。
イメージとしては,図2- 1のようになります。元の公示地価データ(koujitika)と駅データ(stationdata)をマージさせますが、公示地価データの最寄り駅を基軸に、駅データの当該駅の他の変数(路線,都心,運賃,・・・)を追加していきます。その際に公示地価データの最寄り駅が駅データにない場合はNAとなります。
図2-1 データのマージ
|を入れる|は複数の条件を意味しています。#koujitika_merge <- filter(koujitika_merge, d_JR中央線==1 |
#d_西武池袋線==1 | d_東武東上線==1 )
では、簡単に重回帰分析をやりましょう。下記のように、基礎統計も出力してみましょう。
当年価格として、dataオブジェクト名koujitika内の都心までの時間、最寄り駅までの距離、地積面積の3つを用いてreg1(自由にオブジェクト名を付けてください)という名のオブジェクトとして重回帰分析を行うよう命令したコマンドです。変数名以外は半角で。
- summaryは,オブジェクトreg1を出力させる命令です。#reg1 <- lm(当年価格 ~ 都心までの時間 + 最寄り駅までの距離 + 地積面積,data = koujitika_merge)
#summary(reg1)
提出課題は最低でも5つの説明変数を用いてください。
データの一部で推定したいときは下記のようにsubsetを作って推定します。
#result <- lm(当年価格 ~ 都心までの時間 + 最寄り駅までの距離 + 地積面積,subset=(当年価格>=20000),data = koujitika_merge)
Rを用いて推定結果をsummary関数を使って表示すると情報量が多すぎます(前節出力参照)。読者にやさしく整理しなおします。
modelsummaryパッケージを用いて、回帰分析の結果をまとめた表を作成してみる方法を説明します。
パッケージをインストールし、呼び出しておきましょう。
install.packages(“modelsummary”)
install.package(“tidyverse”)
#library(modelsummary)
#regs <- list()
#regs[['Model A']] <- lm(当年価格 ~ 都心までの時間 + 最寄り駅までの距離 + 地積面積,data = koujitika_merge)
#msummary(regs, #regsというオブジェクトを指定
#stars= c("*" = .1, "**" = .05, "***" = .01) , #有意水準を示す星をつける
#gof_omit='RMSE|AIC|BIC|Log.Lik.' #ここでは使わない統計量を非表示
#)
デフォルトで表示されるのは係数と標準誤差(かっこ内)です。 統計量としては、Num.Obs.が観測数、R2が決定係数、R2 Adj.が調整済み決定係数を表します。(その他の説明は省略)
表はさまざまな形式で出力できます。例えばExcel形式で保存したい場合は、以下のようにオプションを加えます。
#library(modelsummary)
#regs <- list()
#regs[['Model A']] <- lm(当年価格 ~ 都心までの時間 + 最寄り駅までの距離 + 地積面積,data = koujitika_merge)
#msummary(regs, stars= c("*" = .1, "**" = .05, "***" = .01) , gof_omit='RMSE|AIC|BIC|Log.Lik.', 'result.xlsx')
#datasummary_skim(histogram = FALSE, output='summary.xlsx', regs$`Model A`$model, fun_numeric = list( 平均 = Mean, 標準偏差 = SD, 最小値 = Min, 最大値 = Max) )
datasummay_skimコマンドで出力します#library(modelsummary)
#datasummary_skim(histogram = FALSE, #ヒストグラムを表示しない
#output='summary.xlsx', #Excelファイルに出力
#regs$`Model A`$model, #regsオブジェクトのModel Aの分析に使ったデータを指定
# fun_numeric = list( 平均 = Mean, 標準偏差 = SD, 最小値 = Min, 最大値 = Max) #表示する項目を指定
# )
課題 [学籍番号]rep2_04を提出して下さい。