とある技術者の徒然草

生産技術者の適当な日記(統計言語Rに関するメモがメイン)

R言語

【R言語】ランダムフォレストrangerパッケージ 変数の重要度を可視化

rangerパッケージにおける変数重要度の可視化 kefism.hatenablog.com こちらの関数がうまく動かなかったため改造して、関数を作成した。 library(tidyverse) library(ranger) # random sampling df <- diamonds str(df) n <- nrow(df) s <- sample(n, n * 0.…

【R言語関連書評】Rによる統計的学習入門を買ってみた

Rによる統計的学習入門 こちらの書籍は以前から気になっていた 「An Introduction to Statistical Learning」 の和訳になります。 www-bcf.usc.edu 英語だとpdfがタダで読めますが、 私は英語がそこまで得意ではないので日本語で読めるとありがたいです。 ぶ…

【R言語】機械学習モデルの変数重要度

変数重要度の有効利用 製造業においてデータ分析の目的は予測よりも要因解析であることのほうが多い。 ブログを見ていると機械学習モデルの変数重要度について解説している 素晴らしサイトを見つけた。 dropout009.hatenablog.com Permutation importanceと…

【R言語】重回帰分析で交互作用を検討

重回帰分析で交互作用を検討 重回帰分析で交互作用を検討する場合は、 中心化が必要。その時はscale関数でscale引数をFALSEにすると楽。 http://cogpsy.educ.kyoto-u.ac.jp/personal/Kusumi/datasem13/shinya2.pdf #重回帰分析 library(tidyverse) library(c…

【R言語】分散分析・実験計画法の解析

Rを使った分散分析・実験計画法の解析 carパッケージのAnova関数を使って分散分析をやってみる。 #http://www.asakura.co.jp/G_12.php?isbn=ISBN978-4-254-12216-9 からサンプルデータをもらう df <- read.table("rei31.csv",header = TRUE,sep=",",na.strin…

【R言語】2018年データサイエンスに必要なパッケージトップ7-DataExplorer-

2018年データサイエンスに必要なパッケージトップ7 製造ラインで発生した不良品の原因を調査するときには 工程で得られた大量のデータを分析する必要があります。 特に不良要因の仮説さえない状況下では、 探索的データ分析(EDA)が必須です。 ただ、皆さんも…

【R言語】GUIでggplot2を操作する決定版パッケージesquisse

GUIでggplot2を操作する決定版パッケージesquisse ggplot2の文法を忘れてしまう。 プログラミングが面倒。 といった問題を解決する超便利なパッケージesquisseを紹介する。 #ggplot2 GUI install.packages("esquisse") library(esquisse) irisdata <- iris e…

【R言語】FactoMineRとfactoextraパッケージで主成分分析②

FactoMineRとfactoextraパッケージで主成分分析 主成分分析の結果を階層型クラスター分析でクラスタリングする。 #階層型クラスター分析の結果を主成分分析を使って可視化する data("USArrests") head(USArrests) res_pca <- PCA(USArrests,ncp=3,graph = FA…

【R言語】FactoMineRとfactoextraパッケージで主成分分析

FactoMineRとfactoextraパッケージで主成分分析 FactoMineR"と"factoextraパッケージを使用すると、 主成分分析の結果を間単に可視化できた。 install.packages(c("FactoMineR","factoextra")) library(FactoMineR) library(factoextra) data(decathlon2) he…

【R言語】LightGBMでマルチクラス分類

RにLightGBMをインストール まずインストールが面倒である。 以下のHPに沿ってインストールしたが何故かエラーが起きた lightgbm.readthedocs.io 対策 ・QAで書いてあった以下の対策でうまくインストールすることができた。 https://github.com/Microsoft/Li…

【R言語】クラスターの数を機械的に決める factoextraパッケージ

クラスターの数を機械的に決める クラスター分析でkmeans法を使用するときはクラスタ数を自分で決定する必要がある。 その際に参考となるGap統計量を求める。 #install.packages("factoextra") #適切なクラスター数の検討 library(factoextra) #wssの推移を…

【R】すべてNAの列を削除

すべてNAの列を削除 完全なる防備メモです。 #すべてNAの列を削除する #オブジェクトxのデータ数を数える > length(x) #select_if()を使ってみる。これは,第二引数である.predicateに関数を準備し, #各変数をこの関数に当てていく。そしてTRUEを返した関数…

【R】不均衡データを是正して決定木分析

SMOTEアルゴリズムで不均衡データを是正 是正前のIncomeの比率は FALSE TRUE 718 22027 不均衡データを是正すると要因が変わるか確認する。 #不均衡データであることがわかる #smoteで不均衡データを是正する #install.packages("DMwR") library(DMwR) acs_s…

【R言語】rattle partykitで決定木分析結果の見える化

決定木の見える化 決定木の分析結果をより分かりやすくするため、 rattleやpartykitpartykitパッケージで見える化する。 注意点は目的変数がファクターでないと エラーが起きるのでファクター化する。 #フルモデルから決定木分析をしてみる #fancyRpartPlot…

【R言語】決定木分析

rpart関数で決定木分析 機械学習には二つの目的があると思っている。 予測 要因分析(推測) 製造業では後者の要因分析が目的になることが多いと考える。 だって技術者としては何がどのようにどれくらい影響を及ぼしているか メカニズムを解明したいでしょ?…

【R言語】Lasso回帰の係数プロット

Lasso回帰のモデルから係数を詳しく調べてステップワイズ法のモデルと比較しよう まずはLasso回帰の解パスを見てみる。以下のようになった。 Lasso回帰 ・図の見方 左側が誤差MSEが最小値となるλの対数 右側が誤差MSEが最小となるときのMSEの上側1seとなると…

【R言語】step関数 ステップワイズ法による変数選択

ステップワイズ法による変数選択 みんなのR(第二版)P374にステップワイズ法に 関する記述があるのでメモします。 ステップワイズ法とは説明変数の増減を繰り返して AICやBICなどの情報基準量やF値を評価し、 最適な変数を探す手法です。 データセットは引…

【R】変数を生成しながら数値を代入

変数を生成しながら数値を代入 変数を変えながら数値を代入する方法をメモしておく。 #変数を動的に生成しながら、数値を代入 xlist<-list("AAA","BBB","CCC") syukei <- c(2,3,4) syukei[1] for (i in 1:length(xlist)){ assign(sprintf("X%d", i), syukei[…

【R言語】glmnetでlasso回帰 plotmoパッケージでsoluthion pathにラベルを付け

soluthion pathにラベルを付けるには? glmnetのplotではsoluthion pathにラベルが付かない。 変数が多いと似たような色になるので、 ラムダを変化したとき偏回帰係数の変化がわからない。 plotmoパッケージでラベルを付けることができた。 ・ コード #Ameri…

【R】with()関数って何? みんなのR

二値変数作成 条件を判断してTRUE / FALSEを追加 みんなのR(第二版)を購入しました。 気になったのはP380glmnetで訓練させる場面。 二値の変数を作成する場面で、with()関数を用いていた。 全く使ったことがなく、ググってみてもよくわからない。 とりあえ…

【R言語】lubridate 月初の日付を取得

月初の日付を取得 Sys.time()で現在時刻を取得 lubridateのyear()関数とmonth()関数で年と月を抽出 paste関数で01と結合 library(tidyverse) library(lubridate) #Sys.time()で現在日時を取得後、フォーマットで変換 today_date <- format(Sys.time(),"%Y/%b…

【R】dplyr 複数の条件で場合分け+(おまけ:累計数を計算)

複数の条件で場合分けして数値を変換 case_when()の使い方 例えば時刻の「分」を15分単位で離散化したいといった場合を想定。 dplyrのcase_when()関数が使いやすかったのでメモする。 library(tidyverse) #時刻 分 のダミーベクトルを生成する hour <- as.in…

【R】ユニーク数(項目の種類)を数えるコード

ユニーク数(項目の種類)を数えるコード Rの防備メモです。 下記のkaggleのメルカリコンペで使った、 カラムのユニーク数を数えるコードをメモります A Very Extensive Mercari Exploratory Analysis | Kaggle library(tidyverse) library(data.table)#frea…

【R】来年dplyrがver 0.8.0になるらしい

新年早々dplyrがver 0.8.0 また、dplyrのバージョンが変わるらしいです。 とりあえず気になる点は group_by()でfactorのlevelごとにグループ化する挙動変更 group_nest()などの新機能 まぁ現状の機能さえ完全に使いこなせていないので、 新機能のほとんどは…