自分用 "R" Tips

他人からした可読性のことなど気にしない覚書です。

【ファイル操作系】

ファイルの読み込み
  • list.files() #unixでいうところの「ls」コマンド。dosコマンドでいえば「dir」
  • getwd() #現在の作業ディレクトリを確認
  • ''setwd("C:/usr")'' #作業ディレクトリ"C:/usr"に変更する。UNIXでいうところの"cd"。rのバージョンによってはフルパスで書かないとだめ。
    • windows Explorerからパスを貼り付けたとき「\」の部分を「/」に変更しておく必要あり。
  • ''( hoge <- read.table("hoge.csv", header=T, sep=",",row.names=1))''  #一行目、一列目がともにが名前になっているCSVファイル"hoge.csv"を「xxxx」として読み込む*1
  • hogehoge <- t ( hoge ) #行列入れ替え。行列hoge の縦横を入れ替えた行列hogehogeを生成*2
  • ファイル名のみ入力 # ファイルの中身を参照(catコマンド)
  • ''hoge<-read.csv(file('/path/hoge.csv',encoding='Shift_JIS', header=T, row.names=1))'' #日本語をCSVで読み込ませるとき。encoding='Shift_JIS'などでShift_JISが読みこめるらしい。
ファイルの書き出し
  • 画像のPDFへのプロットの書き込み
    • pdf(family="Japan1","hogehoge.pdf", width=40, height=15) # PDFファイルのパスを指定して開く。PDFファイルが日本語を扱えるように指定。書体指定を別途行うことも可能。
    • plot(xxxx) #plotしたいものをplotする
    • dev.off() #ファイルを閉じる
  • テキストデータの書き込み
    • テキストデータは、 write() コマンドでいけるが、あまりおすすめしない。
  • CSV
    • write.csv(hogehoge, file='hogehoge.csv')

【パッケージの利用】

  • chooseCRANmirror() #サーバー選択後
  • install.packages( "ライブラリ名" ) #パッケージのインストール
  • library("psych") #ライブラリの呼び出し

【ヘルプ】

  • help"コマンド名" #コマンド名についてのhelpを表示

【データを見る】

  • hoge[1,] #1行目のデータを見る
  • hoge[,5] #5列目のデータを見る
  • hoge[1,5]#1行目の5列目のデータを見る。
  • head(hoge, n=10) #hogeの上から10行目までを見る
  • dim(hoge) #hogeの行列の行数と列数を確認する。

【分析フェイズ:基本】

基本 of the 基本
  • summary(xxxx) #基本統計量:最小値、最大値、算術平均、中央値とか
  • hist(xxxx$age) #列ageの中身でヒストグラム作成
  • boxplot(xxxx$age) #列ageの中身で箱ひげ図作成
  • table(xxxx$age) # 列ageの単純集計を行う
一列目をテキストデータのまま扱う
  • こちら参照:https://oku.edu.mie-u.ac.jp/~okumura/stat/pca.html
    • row.names(xxxx) = xxxx[,1] #一列目を文字列として横に出す。xxxxは格納している変数
    • xxxx = xxxx[,2:5] #全体が一列目が文字列だったとして、2列目から5列目までを分析対象とする場合の例
正規分布さまのための変数
  • qqnorm(xxxx$age) #列ageがどの程度正規分布な感じなのかを見る。プロット図が直線だったら、正規分布だよ。
散布図を眺めたい時*3
  • 散布図の基本
    • plot(xxxx) # 全変数間の散布図を作図する
    • plot(xxxx[ 1 : 4 ] ) # 変数1 〜 4の間の散布図を作図する
    • plot(varA ~ varB, data=xxxx ) # 変数名varA X 変数名varB の散布図を作図する
相関分析で概観したいとき(pearson)
  • round(cor(xxxx),4) #相関係数を一覧する
  • pairs(xxxx,pch=21,bg="red",cex=1) #散布図をまとめてプロットする
  • cor.test(xxxx$len, xxxx$width) #相関係数の有意性テスト。列lenと、列widthの間のテスト

※kendall,spearmanの相関についてはググれ。

単回帰の時に使うもの*4
  • result_of_tankaiki = lm(mokuteki~setsumei, data=xxxx) #データxxxxのなかにある列mokutekiを目的変数, 列setsumeiが説明変数として、解析結果を変数result_of_tankaiki にぶっこんでいる。
  • summary(result_of_tankaiki) #統計結果を見る。Estimateの直下に切片a,もひとつ下が傾きbになる。(P( > |t|))がP値。
  • plot(xxxx$age, xxxx$len) #列ageと、列lenの2つの散布図だけを見たい場合
  • abline(result_of_tankaiki, col=”red”) #最小二乗法なかんじの単回帰の直線を書く時。
重回帰*5
  • (result_of_jyukaiki.lm <-(mokuteki ~., data=xxxx)) #"."は正規表現的な表記。mokuteki列以外の、残り全部被説明変数としてぶっこみたい場合に。
  • result_of_jyukaiki.lm <-(mokuteki~setsumei1 + setsumei2 + setsumei3 , data=xxxx) #目的変数に列mokuteki,説明変数にsetsumei1,setsumei2,setsumei3を使う感じ。もちろんどんどん増やしたり変えたりしておk。
  • result_of_jyukaiki.lm <-(mokuteki~(setsumei1 + setsumei2 + setsumei3)^2 , data=xxxx) # 「^2」を付けることで、説明変数感の相関関係(交互作用)を良い感じに排除してくれる。なんか、高度なことを一発でやってくれてるので、アレだね…。クリック統計学スマソ感が出るよね。
  • extractAIC(result_of_jyukaiki.lm) #よーわからんが、モデルの評価のためのものとして「AIC」という値があるらしい。この値が小さければ小さいほどいいのだそうな。
  • summary(result_of_jyukaiki.lm)
  • result_of_jyukaiki.lm2<-step(result_of_jyukaiki.lm1) #重回帰のあてはめのいい説明変数を勝手に選んでくれるというすぐれもの。すぐれもの過ぎて、ぶっちゃけ恐縮するっていうか、これぞクリック統計学ってやつですね感すら漂ってくる次第です。
  • summary(result_of_jyukaiki.lm) #重回帰の結果を確認
  • plot(result_of_jyukaiki.lm2)
  • par(temp.par) #回帰診断図をつくる。右上のQQプロットが、ちゃんと直線になってるかで、正規分布へのあてはまりの強さをあらわす。
ロジスティック回帰分析
t検定
p検
F検定
χ自乗検定:クロス集計表とかの偏りを検定するやつ

【すこし複雑なやつ】

主成分分析
  • 基本操作
    • xxxx <-read.csv(“xxxx.csv", header=T) #ファイル"xxxx.csv"を読み込み、「xxxx」に格納する。一行目はヘッダー。
    • resultx <- prcomp(xxxx, scale=T) # xxxxに主成分分析(prcomp)をかける。結果は「resultx」に格納される。
    • summary(resultx) #「resultx」の中身をみる。第一主成分(PC1)や、第二主成分(PC2)がどの程度の説明力をもっているかを確認できる。
    • biplot(resultx) #主成分分析の図をプロットする。
    • round(result$rotation, 3) #各主成分にそれぞれの変数がどのぐらい効いているかを把握する
    • resultx$x : 主成分得点を出力する
  • biplotコマンドの表示範囲制御オプション
      • biplot(xxxxx, expand=10, xlim=c(-0.30, 0.0), ylim=c(-0.1, 0.1)) #expandが矢印の長さ、xlimで左端、右端。ylimで下端、左端の値を制御できる。
クラスター分析
  • xxxx.d<-dist(seiseki)
  • round(xxxx.d) #データのユークリッド距離を求める。
  • par(mfrow=c(2,2))
  • (xxxx.hc<-hclust(xxxx.d))
  • plot(xxxx.hc,main="最遠隣法")  
  • plot(xxxx.hc,hang=-1,main="最遠隣法") #最遠隣法の図をプロット
  • xxxx.hc2<-hclust(xxxx.d,method="centroid")#重心法centroidの処理をしたものをxxxx.hc2に格納
  • plot(xxxx.hc2,hang=-1,main="重心法") #重心法centroidの図をプロット
  • xxxx.hc3<-hclust(xxxx.d,method="ward.D")#ward法の処理をしたものをxxxx.hc3に格納
  • plot(xxxx.hc3,hang=-1,main="ウォード法") #xxxx.hc3をプロット
コレスポンデンス分析
自然言語処理
Rでカテゴリカルデータ

*1:header=T で一行目がタイトル行だからヨロ、という意味。 sep=","はコンマで列がセパレートされてるからヨロ、という意味。タブ区切りの場合は"\t"

*2:わかんなかったら「転置行列 R」でググればおkだと思う

*3:詳しくは、ココとか http://monge.tec.fukuoka-u.ac.jp/r_analysis/descriptive_graphics01.html 「散布図 r」でググるといろいろと出てくるよ

*4:参考:https://sites.google.com/site/webtextofr/seminar1http://mjin.doshisha.ac.jp/R/13.html

*5:参考:http://mjin.doshisha.ac.jp/R/14.html