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

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

サインインしてコメントする。

採用された回答

Hiroki Okawa
Hiroki Okawa 2020 年 2 月 21 日
編集済み: Hiroki Okawa 2020 年 2 月 21 日
配列なのか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 件のコメント
Hiroki Okawa
Hiroki Okawa 2020 年 2 月 21 日
編集済み: Hiroki Okawa 2020 年 2 月 21 日
綺麗にまとまっているデータですね!
今回必要なセンサーデータを 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 2020 年 2 月 24 日
ありがとうございます!!
データ処理を進めることができそうです。

サインインしてコメントする。

その他の回答 (0 件)

製品


リリース

R2019b

Community Treasure Hunt

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

Start Hunting!