Main Content

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

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

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

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

  • 可視化を含める。

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

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

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

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

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

load fatalities
fatalities(1:10,:)
ans=10×8 table
                            longitude    latitude    deaths    drivers    vehicles    vehicleMiles    alcoholRelated    urbanPopulation
                            _________    ________    ______    _______    ________    ____________    ______________    _______________

    Wyoming                  -107.56      43.033      164      380.18      671.53         9261              54              65.226     
    District_of_Columbia     -77.027      38.892       43      349.12       240.4         3742              12                 100     
    Vermont                  -72.556      44.043       98      550.46      551.52         7855              20              38.196     
    North_Dakota               -99.5      47.469      100      461.78      721.84         7594              35              55.807     
    South_Dakota             -99.679      44.272      197       563.3      882.77         8784              76              51.923     
    Delaware                 -75.494      39.107      134      533.94      728.52         9301              48              80.021     
    Montana                  -110.58      46.867      229      712.88      1056.7        11207             100              54.031     
    Rhode_Island             -71.434      41.589       83      741.84       834.5         8473              41              90.936     
    New_Hampshire            -71.559      43.908      171      985.77      1244.6        13216              51              59.181     
    Maine                    -69.081      44.886      194      984.83      1106.8        14948              58              40.206     

死亡率の計算

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

走行距離 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')

データの相関の検出

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

データを使って試行し、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]))

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

結果をまとめて、ライブ スクリプトを同僚と共有します。ライブ スクリプトを使用して、解析を再作成したり、拡張することができます。また、解析を 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')

関連するトピック