Rによるデータ分析

R-EDA1のリリースノート

R-EDA1 のリリースノートです。 GitHubの https://github.com/ecodata22/R-EDA1 でバージョン管理しているので、そちらにも更新のコメントは入れていますが、英語ですし、 コードのどこが変わったのかよりも、できることの何が変わったのかに興味がある方の方が多いと思いますので、このページも作っています。

ちなみに、このサイトの更新は、 トップページ古い更新履歴 にあります。

リリースノート

2021/10/15:「時系列解析」

「Analysis」に「Time series(時系列)」を加えました。 今までは時系列解析をやろうとすると、ヒートマップや、折れ線グラフしかなかったのですが、だいぶ増えています。
R-EDA1 

全体に共通することとして、「2021/10/19 13:30」のような時刻のデータは使わないです。 時刻のデータは、表記の仕方が様々で全部に対応するツールは作りきれないためです。 その代わり、データは「1分おき」などの等間隔の時間で収集されたことを想定しているので、 データの個数で「時間」の分析ができるようにしてます。 1分間隔の場合、「n = 12」は「12分」です。

「Multi_variable(多変量)」の中の「Stratifeid_graph(層別グラフ)」は、注目したい変数の折れ線グラフです。 他の変数を使って色分けしたり、グラフを分割することができます。
R-EDA1 

「Multi_variable(多変量)」の中の「Dimension_reduction(次元削減)」は、次元削減の方法で変換した変数の全部を見るためのグラフです。 下図は、「PCA(主成分分析)」を選んだ場合です。 「ICA(独立成分分析)」や「Factor(因子分析)」でもできます。 「None」を選ぶと、元の多変量全部を一緒に見るグラフになります。
R-EDA1 

「One_variable(一変数)」の中の「Difference_previous(前との差)」は、直前のデータとの差(差分)の分析です。 一番上のグラフは、元のデータで、その下が差分をグラフにしたものです。 差分に傾向がなく、ランダムな場合は、 ランダムウォークモデル と考えられますので、予測する時は、直前の値が一番確からしい予測値になります。
R-EDA1 

「One_variable(一変数)」の中の「Quasi_periodic(準周期)」は、工場のセンサーデータのように、 繰り返しはあるものの、周期の長さが一定ではないデータの分析をするためのツールです。 この機能は、グラフの出力はなく、 1.5次データの解析 や、 2次データ(特徴量)の解析 をするためのデータがダウンロードできるようになっています。
必要に応じて、このデータをさらに分析に使うことを想定しています。
準周期性が、1と0の数字で表されている変数があれば、それを使うことができます。 こういった変数がない場合、特定の変数について、「1列目が、40より大きければ1、40以下なら0」というようにして、こうした変数を作ることもできます。
R-EDA1  

「One_variable(一変数)」の中の「fft(高速フーリエ変換)」は、 スペクトル解析 のツールです。正確な周期性がある場合の分析方法になります。 横軸は、Wavelength(波長)にしてあります。 下図の場合は、波長が20のところにピークがありますので、20行おきに周期性のあるデータであることがわかります。
R-EDA1 

2021/10/09:「木を複数作る決定木分析」

「Decision_Tree(決定木)」に、「C5.0_based_RandomForest(C5.0を使ったランダムフォレスト)」を追加しました。

「C5.0」では、木は1つできますが、これは全変数、全サンプルを使って作られます。

C5.0_based_RandomForestでは、変数やサンプルの1部について、複数の組合せを選ぶことで、複数の木を作ります。 これによってデータの多様性や、似たような結果になる変数がわかるようになります。

1部のデータの選び方は、ランダムサンプリングです。 行数や列数の平方根の数を選ぶようにしてあります。 例えば、10000行のデータなら、100行が選ばれます。

「Random sampling of samples (columns)」にチェックを入れて、 「Random sampling of variables (rows)」のチェックを外すと、サンプルは1部を使って、変数は全部使う形で、複数の木を作ります。 これは「バギング」という言われている手法になります。

逆に「Random sampling of samples (columns)」のチェックを外して、 「Random sampling of variables (rows)」にチェックを入れると、変数は1部を使って、サンプルは全部使う形で、複数の木を作ります。 サンプル数が少ない場合や、因果関係の分析では、このやり方の方が知りたいことに到達しやすくなります。

R-EDA1  R-EDA1 

2021/10/09:「ロバストな決定木」

決定木を作る時の木の細かさは、デフォルトにお任せにしていたのですが、巨大な木(枝分かれが細かい木)になることがあります。 因果関係の分析では、3番目くらいまでの枝分かれがどうなるのかが重要で、巨大な木は不要なことが多いです。 また、巨大な木をOKにすると、計算時間が非常に長いことがあります。 さらに、巨大な木は、過学習とも言えることがあり、ロバストではないので使いにくいです。

そこで、枝分かれ先の最小の大きさを設定できるようにしました。 「Use minimum size of splits」にチェックを入れると、設定できるようになります。 チェックを外すと、デフォルトにお任せになります。
例えば、「Ratio of the number of minimum size」を「0.1」にすると、最小になる枝分かれは、全体の0.1になります。 1000行のデータでしたら、100よりも小さくはならなくなります。
R-EDA1

下の2つの図は、同じデータに対して、設定値を変えた場合の例です。
R-EDA1  R-EDA1

2021/10/09:「ヒートマップ」

今までは、「Similarity_of_Variables_and_Categories(変数とカテゴリの類似度))」と、 「Similarity_of_Names_in_Rows_and_Columns(行と列の名前の類似性)」のそれぞれの中に、 ヒートマップを使って、データの表全体を可視化する方法を入れていました。 それぞれで少し機能を変えていました。

データの表全体を可視化する方法は、「Similarity_of_Samples(サンプルの類似度)」でも役立つのですが、入っていませんでした。

データの表全体を可視化する方法は、EDAの基本になるものですし、3種類のSimilarityの全部を分析できる方法としても他の方法とは違いますので、 「Heat_map(ヒートマップ)」は、3種類のSimilarityの分析から独立させてひとまとめにしました。
R-EDA1

「Add clustering methods for rows」にチェックを入れると、似た変数が近くになるように並び変えられます。 「Add clustering methods for columns」にチェックを入れることで、似たサンプルを近くにすることもできます。
R-EDA1

似たサンプルを近くにする方法は、もうひとつあります。 「Use decreasing the columns(行の降順を使う)」にチェックを入れると、任意の変数について降順で並べられます。
R-EDA1

2021/10/09:「サンプル名の使い方の改善」

「Heat_map(ヒートマップ)」、「Similarity_of_Samples(サンプルの類似性)」、「Similarity_of_Names_in_Rows_and_Columns(行と列の名前の類似性)」の3つの分析の機能には、今まで、「データには、サンプル名の列がなければならない」、「サンプル名の列は1列目でなければならない」、という前提がありました。

今回、この2つの前提を不要にしました。

「Use one of the row as sample name」のチェックを外すと、サンプル名の列がない場合に、行番号をサンプル名の代わりにして、分析することができます。

「Row number of sample name(サンプル名の列番号)」に入れた数字の列がサンプル名として扱われます。

R-EDA1

2021/10/03:「階層的な方法によるクラスター分析」

階層的な方法によるクラスター分析は、サンプルの種類が少ない時は良いのですが、ある程度多くなると、グラフに字が重なるようになり、 解読不能になります。

そのため、R-EDA1には入れていなかったのですが、インタラクティブなタイプのグラフにするのなら、解読不能ということもなくなりますので、 追加しました。

「Similarity_of_Samples(サンプルの類似性)」
→「Dimension_All"(全次元)」

と進んだ中にある「hclust」になります。

R-EDA1

下図がインタラクティブの機能を使って、一部を拡大したものです。
R-EDA1

2021/10/03:「サンプルの因子分析」

2021/09/25に因子分析のリリースをしましたが、変数の関係を分析するための機能として作っていました。 そのため、「Similarity_of_Variables_and_Categories(変数やカテゴリの類似性)」の中に組み込まれていました。

因子分析は、サンプルの類似性を因子との関係も含めて調べたい時にも使いますので、そのための機能も作りました。

「Similarity_of_Samples(サンプルの類似性)」
→「Dimension_2"(2次元)」

と進んだ中にある次元削減の種類に、「Factor(因子)」を追加しました。 2次元散布図の軸が、因子になります。

R-EDA1

2021/10/03:「インタラクティブなグラフ」

ほぼすべてのグラフが、インタラクティブなタイプに変わりました。 見た目は同じでも、見たい場所だけ拡大表示したり、マウスで個々のプロットの情報を確認できたりします。 ネットワークグラフの場合は、グラフをつまんでグリグリ動かせます。

散布図やヒストグラム:ggplotlyでplotly化
ヒートマップ:heatmaplyに変更
ネットワークグラフ:無向グラフはnetwork3D、有向グラフはvisnetwork

R-EDA1

R-EDA1

2021/10/03:「言葉の散布図」

「Similarity_of_Samples(サンプルの類似性)」
→「Dimension_2"(2次元)」

と進んだ中にある次元削減の種類に、「None(なし)」を追加しました。

任意の2つの変数について、サンプル名の散布図を作れます。
R-EDA1

2021/10/03:「3次元の散布図」

「Similarity_of_Samples(サンプルの類似性)」
→「Among_all_columns(すべての列同士)」
→「Stratifeid_graph(層別グラフ)
と進んだ中にあるグラフの種類に、「3D-scatter(3次元散布図)」を追加しました。

3次元の軸以外で、層別できるのは、色だけです 2次元散布図のようにグラフの分割はできません。
R-EDA1

2021/09/26:「line_graph(折れ線グラフ)」

「Similarity_of_Variables_and_Categories(変数やカテゴリの類似性)」
→「Dimension_2(2次元)」
と進んだ中にある次元削減の種類に、「line_graph(折れ線グラフ)」を追加しました。

ラベルの変数の変化の中に、他の変数のカテゴリがどのように入っているのかがわかります。
R-EDA1 R-EDA1

2021/09/25:「Factor_Analysis(因子分析)」

「Similarity_of_Variables_and_Categories(変数やカテゴリの類似性)」
→「Among_all_columns(すべての列同士)」
と進んだ中にあるMethod(方法)に、「Factor_Analysis(因子分析)」を追加しました。

データとして見えている変数の背後に共通因子を仮定して、それがどのようにデータに関わっているのかを調べることができます。

回転は、7種類から選べます。
R-EDA1

2021/09/20:「prediction interval(予測区間)」

「Similarity_of_Variables_and_Categories(変数やカテゴリの類似性)」
→「Between_label_column_and_others(ラベルのと他の変数の関係)」
→「Stratifeid_graph()
と進んだ中にある「histgram(ヒストグラム)」と「scatter(散布図)」のそれぞれで予測区間を出すようにしました。 ただし、いずれもグラフを層別した時には、計算されません。

ヒストグラムは、区間が数字で表示されます。 散布図は、グラフに赤い線で表示されます。
R-EDA1

R-EDA1

2021/09/16:「PCRA__Regression_analysis(主成分回帰分析)」

「Similarity_of_Variables_and_Categories(変数やカテゴリの類似性)」
→「Between_label_column_and_others(ラベルの変数と、他の変数の関係)」
と進んだ中にあるMethod(方法)に、「PCRA__Regression_analysis(主成分回帰分析)」を追加しました。

説明変数と主成分の相関関係は、ネットワークグラフで確認できるようにしています。
R-EDA1




Tweet データサイエンス教室