第13回のテキスト・データの回帰分析の結果に基づいて、以下の分析を行ってください。
ハミルトンとマディソンの共著論文について、以下のように回帰モデルの予測値を計算する。 用語頻度行列「tfm」からハミルトンとマディソンの共著論文(第18、19、20篇)の用語頻度行列「tf.hm」を作成(抽出)する。 「tf.hm」を「newdata」として「predict()」関数を用いて予測値を計算する。 ジョン・ジェイの著した論文(第2、3、4、5、64篇)についても同様に回帰モデルの予測値を計算する。 ジョン・ジェイの緒した論文の用語頻度行列を「tf.jj」とする。 以下の「***」から下をコピーし、計算した予測値に基づいて( )内に適切な語句を入れて、完成した文章をインラインにコピー・ペーストして提出してください。ただし、3については結果について自分なりの解釈を記述してください。
また、末尾にRの出力結果もコピー・ペーストして提出してください。
ハミルトンとマディソンの共著論文の予測値が負となる割合は(100)%である。
ジョン・ジェイの論文の予測値が負となる割合は(100)%である。
上記の結果から次のことがわかる。
(ハミルトンとマディソンの共著論文は、マディソンの特徴が強く出ている。また、ジョン・ジェイの論文は、マディソンと同様の特徴を持つ。)
===== Rの出力結果 =====
> ## 必要な2つのパッケージを読み込む
> library(tm, SnowballC)
要求されたパッケージ NLP をロード中です
> ## 未加工のコーパスを読み込む
> corpus.raw <- VCorpus(DirSource(directory = "federalist", pattern = "fp"))
> ## 小文字にする
> corpus.prep <- tm_map(corpus.raw, content_transformer(tolower))
> ## スペースを取り除く
> corpus.prep <- tm_map(corpus.prep, stripWhitespace)
> ## 句読点を取り除く
> corpus.prep <- tm_map(corpus.prep, removePunctuation)
> ## 数字を取り除く
> corpus.prep <- tm_map(corpus.prep, removeNumbers)
> ## 操作のため行列へ文書-用語行列行列を行列へ変換
> dtm1 <- as.matrix(DocumentTermMatrix(corpus.prep))
> tfm <- dtm1 / rowSums(dtm1) * 1000 # 1000語あたりの用語頻度
> ## 関心のある単語
> words <- c("although", "always", "commonly", "consequently",
+ "considerable", "enough", "there", "upon", "while", "whilst")
> ## これらの単語のみを選択
> tfm <- tfm[, words]
> ## ハミルトンによって書かれた論文(再掲)
> hamilton <- c(1, 6:9, 11:13, 15:17, 21:36, 59:61, 65:85)
> ## マディソンによって書かれた論文
> madison <- c(10, 14, 37:48, 58)
> author <- rep(NA, nrow(dtm1)) # 欠損値をもつベクトル
> author[hamilton] <- 1 # ハミルトンであれば1
> author[madison] <- -1 # マディソンであれば-1
> ## 回帰分析のためのデータフレーム
> author.data <- data.frame(author = author[c(hamilton, madison)],
+ tfm[c(hamilton, madison), ])
> hm.fit <- lm(author ~ upon + there + consequently + whilst,
+ data = author.data)
> hm <- 18:20 # ハミルトンとマディソンの共著論文
> tf.hm <- as.data.frame(tfm[hm, ])
> ## ハミルトンとマディソンの共著論文の予測
> pred.hm <- predict(hm.fit, newdata = tf.hm)
> pred.hm # 予測値
fp18.txt fp19.txt fp20.txt
-0.3853885 -0.6102727 -0.1250502
> jj <- c(2:5, 64) # ジョン・ジェイの著した論文
> tf.jj <- as.data.frame(tfm[jj, ])
> ## ハミルトンとマディソンの共著論文の予測
> pred.jj <- predict(hm.fit, newdata = tf.jj)
> pred.jj # 予測値
fp02.txt fp03.txt fp04.txt fp05.txt fp64.txt
-0.13624854 -1.35995768 -0.04175293 -0.26288400 -0.19032925