メインコンテンツ

ライブ エディターを使用した探索的プログラミングの高速化

ライブ エディターを使用して探索的プログラミングを高速化する方法の例を以下に示します。この例では、ライブ エディターを使用して以下を行う方法を示します。

  • 出力を、その生成元コードとともに表示する。

  • プログラムを複数のセクションに分割してコードのブロックを個別に評価する。

  • 可視化を含める。

  • コントロールを使用してパラメーター値を試す。

  • 結果を要約して共有する。

ハイウェイでの死亡率データの読み込み

ライブ エディターには、出力がその生成元コードとともに表示されます。セクションを実行するには、[ライブ エディター] タブに移動して、[セクションの実行] ボタンを選択します。また、セクションの左端へマウスを動かすと表示される青いバーをクリックして実行することもできます。

この例では、ハイウェイでの死亡率データについて調べます。データの読み込みから始めます。変数は、table の列ヘッダーとして表示されます。

load fatalities
fatalities(1:10,:)
ans=10×8 table
    -107.5556    43.0327    164    380.1800      671.5290     9261     54    65.2257
     -77.0269    38.8921     43    349.1220      240.4030     3742     12        100
     -72.5565    44.0435     98    550.4620      551.5160     7855     20    38.1964
     -99.4998    47.4691    100    461.7800      721.8350     7594     35    55.8072
     -99.6790    44.2720    197    563.2980      882.7690     8784     76    51.9228
     -75.4942    39.1071    134    533.9430      728.5240     9301     48    80.0211
    -110.5763    46.8671    229    712.8800    1.0567e+03    11207    100    54.0310
     -71.4337    41.5887     83    741.8410      834.5010     8473     41    90.9356
     -71.5591    43.9080    171    985.7750    1.2446e+03    13216     51    59.1811
     -69.0811    44.8858    194    984.8290    1.1068e+03    14948     58    40.2057

死亡率の計算

ライブ エディターではプログラムを、テキスト、コード、および出力を含むセクションに分割できます。新しいセクションを作成するには、[ライブ エディター] タブに移動して、[セクション区切り] ボタンをクリックします。セクションのコードは個別に実行できるため、プログラムを記述しながら、考えた内容を簡単に試してみることができます。

走行距離 100 万マイルあたりの死亡率を計算します。これらの値から、最低の死亡率を示す州と最大の死亡率を示す州を見つけることができます。

states = fatalities.Properties.RowNames;
rate = fatalities.deaths./fatalities.vehicleMiles;
[~, minIdx] = min(rate);                  % Minimum accident rate
[~, maxIdx] = max(rate);                  % Maximum accident rate
disp([states{minIdx} ' has the lowest fatality rate at ' num2str(rate(minIdx))])
Massachusetts has the lowest fatality rate at 0.0086907
disp([states{maxIdx} ' has the highest fatality rate at ' num2str(rate(maxIdx))])
Mississippi has the highest fatality rate at 0.022825

死亡率の分布

プログラムに可視化を含めることができます。出力と同様に、プロットと Figure がそれらの生成元コードとともに表示されます。

棒グラフを使用して、州の死亡率の分布を確認することができます。死亡率が走行距離 100 万マイルあたり 0.02 を超えている州は 11 州あります。

histogram(rate,10)
xlabel('Fatalities per Million Vehicle Miles')
ylabel('Number of States')

Figure contains an axes object. The axes object with xlabel Fatalities per Million Vehicle Miles, ylabel Number of States contains an object of type histogram.

データの相関の検出

ライブ エディターで複数のパラメーター値を試して結果がどう変化するかを確認することで、データをすばやく調べることができます。コントロールを追加してパラメーター値を対話形式で変更します。コントロールを追加するには、[ライブ エディター] タブに移動し、[コントロール] ボタンをクリックして使用可能なオプションから選択します。

データを使って試行し、table 内の変数がハイウェイの死亡率と相関関係にあるかどうかを確認できます。たとえば、ハイウェイの死亡率は、都市の人口割合が高い州ほど低くなっているようです。

dataToPlot = "urbanPopulation";
close                                      % Close any open figures
scatter(fatalities.(dataToPlot),rate)         % Plot fatalities vs. selected variable
xlabel(dataToPlot)
ylabel('Percent Fatalities per Million Vehicle Miles') 

hold on
xmin = min(fatalities.(dataToPlot));
xmax = max(fatalities.(dataToPlot));
p = polyfit(fatalities.(dataToPlot),rate,1);  % Calculate & plot least squares line
plot([xmin xmax], polyval(p,[xmin xmax]))

Figure contains an axes object. The axes object with xlabel urbanPopulation, ylabel Percent Fatalities per Million Vehicle Miles contains 2 objects of type scatter, line.

米国地図への死亡率と都市化のプロット

結果をまとめて、ライブ スクリプトを同僚と共有します。ライブ スクリプトを使用して、解析を再作成したり、拡張することができます。また、解析を HTML、Microsoft® Word、または PDF のドキュメントとして保存し、公開することもできます。

この解析に基づき、米国大陸地図の死亡率と都市人口のプロットを使用して所見をまとめることができます。

load usastates.mat
figure
geoplot([usastates.Lat], [usastates.Lon], 'black')
geobasemap darkwater
hold on
geoscatter(fatalities.latitude,fatalities.longitude,2000*rate,fatalities.urbanPopulation,'filled')
c = colorbar;
title(c,'Percent Urban')

Figure contains an axes object with type geoaxes. The geoaxes object contains 2 objects of type line, scatter.

参考

トピック