データ解析をするためにプロットを多数表示する。

2 views (last 30 days)
Shinsuke Okayasu
Shinsuke Okayasu on 21 Feb 2020
Commented: Shinsuke Okayasu on 24 Feb 2020
ライブスクリプト上でデータ解析を実施するのが目的です。
エクセル、CSV上のデータをMatlab上にインポートしました。
特定の列(データ名有)のデータが別の列データと相関やn次関数と近似できるかどうかを確認したいです。
関係性を可視化するためにプロット一覧を表示したいのですが、そのために有効手段はあるでしょうか?
  3 Comments
Shinsuke Okayasu
Shinsuke Okayasu on 21 Feb 2020
相関係数や近似可能性の検討はまだmatlabでは行っていません。 計算も含めて、可視化matlab 上でを行いたいと考えています。
Shinsuke Okayasu
Shinsuke Okayasu on 21 Feb 2020
Edited: Shinsuke Okayasu on 21 Feb 2020
ある列に対して、他の全ての列から別の列の相関係数や近似の係数が特定の数字以上をもつ列だけを抜き出してプロットということができればいいと考えています

Sign in to comment.

Accepted Answer

Hiroki Okawa
Hiroki Okawa on 21 Feb 2020
Edited: Hiroki Okawa on 21 Feb 2020
配列なのかTableによって、細かいコードは変わってきます。
データが二次元配列で、各列がデータだと仮定してみます。
data_x = 1 : 100;
data_y = rand(100, 50);
という1サンプル100点、50サンプルに対して、例えば相関係数であれば
mat_cc = corrcoef(data_y);
でそれぞれの組み合わせの相関係数が得られます。mat_cc(i, j) はdata_y(:, i)と data_y(:, j)の相関係数です。
ある列cに対して相関係数が最も高い列を一緒にプロットしたい場合、
c = 1; % 仮にc = 1と置きます。
[~, index] = max(mat_cc(c, :) - eye(50) * Inf);
% index = mat_cc(:, c) > 0.7; % 相関係数が0.7以上のものを全てプロットする場合はこのように。
figure;
plot(data_x, data_y(:, c), '-', data_x, data_y(:, index), '--');
title([num2str(c), '列目に対して最も相関係数が高い列: ', num2str(index)])
となります。
どのようなデータに対して、具体的にどのような処理を行い、どのようなグラフを示したいのかを示し、今どこで躓いているのかを教えていただけますとより具体的なアドバイスができるかもしれません。
  3 Comments
Hiroki Okawa
Hiroki Okawa on 21 Feb 2020
Edited: Hiroki Okawa on 21 Feb 2020
綺麗にまとまっているデータですね!
今回必要なセンサーデータを table2array関数などで取り出せば、上記のcorrcoef関数が利用可能です。
data_y = table2array(T(:, 5:end)); % Tがエクセルから取り出したテーブル変数と仮定しています。
ちなみに、得られたインデックスindexから列名を取得したい場合、テーブル変数Tに対して
T.Properties.VariableNames{index}
となります。コマンドウィンドウに文字列で表示する場合は
disp([T.Properties.VariableNames{c}, ' に対して最も相関係数が高いセンサー: ', T.Properties.VariableNames{index}])
となります。これらをfor文で実行すれば各列分の処理ができます。
高いものから順番にn個見つけたい場合はmaxk関数もありますので、ぜひコードを書いてみてください。
Shinsuke Okayasu
Shinsuke Okayasu on 24 Feb 2020
ありがとうございます!!
データ処理を進めることができそうです。

Sign in to comment.

More Answers (0)

Products


Release

R2019b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!