『Rで学ぶデータサイエンス8 ネットワーク分析 第2版』2刷の変更箇所

おかげさまで『Rで学ぶデータサイエンス8 ネットワーク分析 第2版』が増刷され、2刷が出ました。第2版出版後の仕様変更などでRコードが動かなくなっていた箇所についても修正を加えています。

1刷からの修正箇所を列挙すると煩雑になりますので、Rコードがうまく通らない場合には、共立出版のサイトで公開されている2刷対応のサンプルコードを試していただければと思います。

しかしながら、2刷入稿後も既にパッケージの仕様変更があります。さらにダウンロード用のcsvファイルを置いていた無料サーバが2019年3月でサービス停止することになり、データを別の無料サーバに移しましたので、2刷にも変更箇所が生じています。

私の方で把握している第2版2刷の修正箇所は以下の通りです。

第11章
p.301, p.308, p.309, p.315の4か所にあるURL
変更前 > URL <- "http://www.geocities.jp/snatool/sampledata/"
変更後 > URL <- "http://snatool.g2.xrea.com/sampledata/"

p.309
変更前 > install_github('arcdiagram', username='gastonstat')
変更後 > install_github("gastonstat/arcdiagram")

そのほか、Rコードがうまく実行できない箇所がありましたら、twitterメールフォームからお知らせいただけると幸いです。

shinyを使ったスモールワールドシミュレーション

以前、RStudioのmanipulate関数でWatts-Strogatzのスモールワールドシミュレーションを実行する記事を書きました。

RStudioのmanipulate関数でグラフ描画にインタラクティブな操作を追加する(2)

同様のことをshinyを使ってウェブアプリでできるようにしてみました。

https://snatool.shinyapps.io/SmallWorldSimulation/

igraphパッケージversion 1.1.2

『Rで学ぶデータサイエンス8 ネットワーク分析 第2版』における以下の不具合はigraphパッケージversion 1.1.2で解消されました。以下の不具合が見られる場合はR 3.4.1、igraph version 1.1.2に更新してください。

p.79
Windows版のR 3.4.0においてigraphパッケージ(version 1.0.1)のeigen_centrality()関数を実行すると計算が終わらない、Rが終了してしまうなどの不具合が見られる。
 
p.108
Windows版のR 3.4.0においてigraphパッケージ(version 1.0.1)のcluster_leading_eigen()関数で計算が終わらない、Rが終了してしまうなどの不具合がある。

『Rで学ぶデータサイエンス8 ネットワーク分析 第2版』第8章の修正

先週のエントリp.223foreignパッケージ(version 0.8-69)に関する修正を追加しましたが、より簡便な方法がありましたので再修正します。

read.spss()関数で
"GSS1985.sav"ファイルを読み込む際にmax.value.labels = 5という引数を追加することで(エラーメッセージは出ますが)、その後のRコード実行結果を再現できます。

gss85 <- read.spss("GSS1985.sav", use.value.labels = TRUE,
 to.data.frame = TRUE, max.value.labels = 5)

本書のコードのままだと数値として扱いたい年齢なども因子(factor)に変換されてしまい、数値としての計算ができなかったり、計算結果が違ってしまいます。

ここでuse.value.labels = FALSEにすると年齢などが因子に変換されず数値として扱うことができますが、性別や人種などの変数もカテゴリーラベルが使用されず数値のままになってしまいます。

本書の例では
0~6の値をとるnumgivenは数値で、5つのカテゴリからなるraceは因子で扱いたいので、max.value.labels = 5と指定することで、性別や人種は因子として、年齢などは数値として扱うことができ、問題を回避できます。

『Rで学ぶデータサイエンス8 ネットワーク分析 第2版』の修正点追加

foreignパッケージの更新により以下のような変更があります。


p.223

foreignパッケージ(version 0.8-69)では"GSS1985.sav"が読み込めるようになったが、変数のクラスが本書と異なっている部分があるので、本書を再現するためには、attach(gss85)の後に以下の操作を追加する。

 

numgiven <-as.numeric(as.character(numgiven))

age <- as.character(age)

age[which(age == "89 OROLDER")] <- "89"

age <- as.numeric(age)

age1 <-as.numeric(as.character(age1))

age2 <-as.numeric(as.character(age2))

age3 <-as.numeric(as.character(age3))

age4 <-as.numeric(as.character(age4))

age5 <-as.numeric(as.character(age5))

 

以降のコードは本書のまま実行できる。

『Rで学ぶデータサイエンス8 ネットワーク分析 第2版』サンプルコード

『Rで学ぶデータサイエンス8 ネットワーク分析 第2版』のサンプルコードを共立出版サポートページで公開しています。実際にRを動かしながら本書を読む際にご利用ください。仕様変更にともなう修正点(昨日の本ブログへのエントリと同じもの)も同ページで公開されています。

『Rで学ぶデータサイエンス8 ネットワーク分析 第2版』の修正点など

『Rで学ぶデータサイエンス8 ネットワーク分析 第2版』共立出版から出版されました。

イメージ 1



第2版は今年初めに脱稿したのですが、出版までの間にR本体および使用パッケージのバージョンアップにともなう仕様変更で、既に本書のRコードによる実行例が再現されない部分があります。

既知の不具合と対処法をまとめましたので、本書ご利用の際は以下をご参照ください。
その他、お気づきの点、ご質問などありましたら、連絡フォームtwitterMastodonなどでお知らせいただけると幸いです。


*****
p.79
Windows版のR 3.4.0においてigraphパッケージ(version 1.0.1)eigen_centrality()関数を実行すると計算が終わらない、Rが終了してしまうなどの不具合が見られる。固有ベクトル中心性を求める際はsnaパッケージを用いるか、隣接行列からeigen()関数を使って求めるなど他の方法を用いられたい。
 
p.108
Windows版のR 3.4.0においてigraphパッケージ(version 1.0.1)cluster_leading_eigen()関数で計算が終わらない、Rが終了してしまうなどの不具合がある。
 
pp.188~191
ergmパッケージ(version 3.7.1)summary(samplike.model.1)を実行した結果において各項の有意確率などが本書の結果と異なる。summary(samplike.model.2)の結果も同様。
 
p.192
ergmパッケージ(version 3.7.1)で図7.27を描くには
gof.samplike.model.2 <-gof(samplike.model.2, GOF = ~ idegree + odegree + espartners +distance - model)
par(mfrow = c(2,2), mar =c(4,4,3,1))
plot(gof.samplike.model.2)
とする。
これはversion 3.7.1で描かれる図が1つ増えている(modelが追加された)ためである。
全てのGOFを図示するには、
gof.samplike.model.2 <-gof(samplike.model.2)
par(mfrow = c(2,3), mar =c(4,4,3,1))
plot(gof.samplike.model.2)
とする。
 
p.197
ergmパッケージ(version 3.7.1)で図7.29を描くには、
gof.fmh.model.3 <-gof(fmh.model.3, GOF = ~ degree + espartners + distance - model)
windows(height = 3)
par(mfrow = c(1,3))
plot(gof.fmh.model.3)
とする。
全てのGOFを図示する場合は、
gof.fmh.model.3 <-gof(fmh.model.3)
par(mfrow = c(2,2), mar =c(4,4,3,1))
plot(gof.fmh.model.3)
とする。
 
pp.203~204
ergmパッケージ(version 3.7.1)で図7.30を描くには
gof.advice.model.2 <-gof(advice.model.2, GOF = ~ idegree + odegree + espartners +distance - model)
par(mfrow = c(2,2), mar =c(4,4,3,1))
plot(gof.advice.model.2)
全てのGOFを図示するには、図7.27の場合と同様にする。
 
p.208
R 3.4.0において
install.packages("RSiena",repos = "http://R-Forge.R-project.org")
によるインストールができなくなっている。
R-ForgeRSienaのページまたはCRANからバイナリファイル(Windowsでは.zip MacLinuxでは.tar.gz)をダウンロードしてファイルからインストールする。
 
p.223
R 3.4.0においてforeignパッケージ(version0.8-68)によるSPSSファイルの読み込みに失敗する。foreignパッケージに代わってmemisc パッケージ(version 0.99.8)を使ってSPSSを読み込むには次のようにする。
install.packages("memisc")
library(memisc)
data <-as.data.set(spss.system.file("GSS1985.sav"))
foreignパッケージとmemisc パッケージでは読み込んだデータの形式に違いがあるので、後のコードに合わせて次のような操作を加える。
gss85 <- matrix(nrow =nrow(data), ncol = ncol(data))
for(i in 1:ncol(data)) {
 gss85[,i] <- as.numeric(datai)
}
colnames(gss85) <-names(data)
gss85 <-as.data.frame(gss85)
attach(gss85)
 
pp.228~230
8.1を描くには次のようにする。
sex <- factor(data$sex)
plot(sex, same.sex)
8.2を描くには次のようにする。
race <- factor(data$race)
plot(race, same.sex)
8.3を描くには次のようにする。
marital <-factor(data$marital)
plot(marital, same.sex,cex.axis = 0.7)
 
p.246
9.2で描かれているネットワークは本書執筆時から変化しているので、実行結果は同じにはならない。密度や相互性もデータ取得時の値となり、本書の結果とは異なる。
 
p.252
RMeCabパッケージのインストールはOSによらず次のようにする。
install.packages("RMeCab",repos = "http://rmecab.jp/R")