1. 利用するパッケージのインストールと読み込みはスクリプトの最初に記載。
2. 一度インストールするとそのPCにはパッケージが入っているので,以後インストールする必要が無いため、#を付けて、次回から読まないようにする。ただし、学校のPCを使う場合は、毎回初期化されるのでインストールする必要があります
#install.packages(“readxl”)
#install.packages(“modelsummary”)
3. Rを実行するときは,立ち上げ後library()を行う。パッケージの取り外しはdetach(“package:パッケージ名”)を実行。ただし、再インストールは不要。
library(readxl)
library(modelsummary)
4. 実行する一連のコマンドには#をつけて、作業内容が後で分かるようにしましょう。
#駅データの最寄り駅を持っている地点と距離や時間を結合する
stationdata <- read_excel(“駅データ.xlsx”, sheet = “距離・時間”)
koujitika<- merge(koujitika111, stationdata, by=“最寄り駅”, all=T)
1.
必ず、作業用フォルダーを指定する。トップメニューのTools→Global Options→Generalをクリックすると下記のwindowが表示されます。
そこで、
Default working directoryのBrowseをクリックして、作成した作業フォルダーを指定。大学のPCルームのPCではN:フォルダーが使えないので、他のフォルダー(C:等)を作ってください。
2.
新規の作業の場合は、File→New File→R scriptでスクリプトを立ち上げるとUntitledというファイル名になります。ファイル名は以下のように変更できます。
- R
studioのFile→Save as→ファイル名の変更します。ファイル名は必ず変更しておいてください。
3.
criptのsaveは様々な方法があります。上記は一例ですが、作業終了後にツールバーの右上の×をクリックすると、下図のようなwindowが現れます。ここで、checkすると、そのfileが更新されます。作業スペースとはそのときのR作業環境とユーザ定義のオブジェクトを含めたもので、次にRを起動したときに自動的に読み込まれます。データ更新するとデータも更新するか聞いてきます。全部saveすることをお薦めします。
4.
初期設定で文字化けする場合。文字エンコードを間違って変えた人は下記を実行してください。
RstudioのTool→Grobal Options...→Code→Saving→Serialization→Default text encodingで「UTF-8」を指定
1. Rでは簡単な関数は実装されていてそのまま使うことができます。やや複雑な場合は数式をプログラムに変換して関数を作った方が便利です。
2.
例えば、簡単にxとyの和の関数をtasuとして、以下のように定義します。すると、tasu(30,20)を実行すると50となります。callは後ほど使う時に説明します。
tasu<-function(x, y)
x+y
tasu(30,20)
## [1] 50
1.
変数名を一括で変える方法が分かりました。国土数値情報などからデータを入試した場合に有用です。Excelで1行目に元の変数名、2行目に更新したい変数名を入れた下記のようなファイルを作ります。
2. 変数変換の一括コマンドは下記です。
varname_lp <- read_excel(“上記のファイル名.xlsx”, sheet = “シート名”)
colnames(変えるデータオブジェクト名)<-varname_lp
# JR横浜線の場合は下記の通りです。これを検討対象の3路線で作成してください。
#koujitika$d_JR横浜線 <- ifelse(koujitika$路線=="JR横浜線",1,0)
# 複数の条件でダミー変数を作る(2つ条件をすべて含むときは"|"を入れる(例;商業系))
#koujitika$d_商業系 <- ifelse(koujitika$用途区分=="近商" | koujitika$用途区分=="商業",1,0)
# 複数の条件でダミー変数を作る(2つ条件の両方を満たすものだけを取り出すときは"&"を入れる(例;面積が30㎡未満で駅から300m未満))
#koujitika$d_駅近狭小 <- ifelse(koujitika$地積面積<30 & koujitika$最寄り駅までの距離<300,1,0)
- その他、地価に影響しそうな要因は、①形状、②水道,③ガス、④下水道、⑤防火といったところでしょうか?
# 都心までの時間と横浜線の係数ダミー
#koujitika$都心までJR横浜線 <- koujitika$d_JR横浜線*koujitika$山手線からの所要時間
log関数を使います。
#koujitika$ln当年価格 <- log(koujitika$当年価格)
#最寄り駅までの距離にある0を小さな値に置き換える
#koujitika$最寄り駅までの距離 <- ifelse(koujitika$最寄り駅までの距離=="0",0.01,koujitika$最寄り駅までの距離)
#置き換えたデータをつかって改めて対数をとる
#koujitika$ln最寄り駅までの距離 <- log(koujitika$最寄り駅までの距離)
#library(modelsummary)
#regs <- list()
#regs[['実数モデル']] <- lm(当年価格 ~ d_低層+山手線からの所要時間+都心までd_低層+運賃+ 最寄り駅までの距離 + 地積面積+容積率+建蔽率,data = koujitika)
#regs[['対数モデル']] <- lm(ln当年価格 ~ d_低層+ln山手線からの所要時間+ln都心までd_低層+ln運賃+ln最寄り駅までの距離 + ln地積面積+ln容積率+ln建蔽率,data = koujitika)
#msummary(regs, stars= c("*" = .1, "**" = .05, "***" = .01) , gof_omit='RMSE|BIC|Log.Lik.', output='result.xlsx' )
推定結果
\[ \hat{y}=\exp(\frac{{\hat{\sigma}}}{2})\exp({\widehat{lny}}) \] - 対数予測値は、両対数の推定式(1)に説明変数の値を代入することでを得ることができます。 \[ \begin{align} &ln(地価)=8.536-1.303*d 低層住宅-0.505*ln都心までの時間 \\ & -0.216*ln山手線からの所要時間*d 低層住宅+0.255*ln運賃-0.129*ln最寄り駅までの距離\\ & +0.181*ln地積面積+0.871*ln容積率-0.075*ln建蔽率 \ \ \ \ \ (1) \end{align} \]
exp()は対数関数log()の逆関数で、対数化した値を実数に戻します。function(sigma,y)をオブジェクト名pred(これは各自自由に付けてください)で作成します。#$\hat[\sigma}$の求め方
#sigma <-sqrt(sum((regs[['対数モデル']]$residuals)^2)/regs[['対数モデル']]$df.residual)
#$\widehat{ln y}$の求め方
#y <- predict(regs[['対数モデル']],newdata=data.frame(d_低層=1, ln山手線からの所要時間=log(10),ln都心までd_低層=1*log(10), ln運賃=log(351), ln最寄り駅までの距離=log(1142), ln地積面積=log(310), ln容積率=log(242),ln建蔽率=log(58)))
#予測値の計算
#pred <-
#function(sigma,y)
#exp(sigma/2)*exp(y)
#この関数pred()に上記の外生変数を下記のように代入し,実行すると,以下のように計算されます。
#pred(sigma, y)
作業 1.各自の検討路線(3路線)の地価関数を両辺対数で推定してください。ただし,(1)と同じ説明変数にしないこと,少なくとも2つの説明変数を追加してください。
作業 2.推定した関数を用いて予測値を計算してください。予測値の計算にあたっては、各自が用いたデータの平均値を代入してください。ただし、ダミー変数については1か0を用いてください。
※推定に用いた標本についての平均は以下のようなmean関数で求められます。 - 例えば,ln運賃の平均値は下記のようなコマンドになります。
#mln運賃<-mean(regs[['対数モデル']]$model$ln運賃,na.rm = TRUE)
※mean関数では対数が取れない0がある場合、計算できなくなりますのでna.rm = TRUEでnaを除外しています。