主要内容

时间表を使用したタ▪▪ムスタンプ付きデ▪▪タの前処理と探索

この例では,时间表データコンテナーを使用してタイムスタンプ付きデータを編成および前処理し,センサーデータから自転車の交通量パターンを解析する方法を示します。マサチュセッ州ケンブリッジのブロドウェストリトにあるセンサのデタを使用します。ケンブリッジ市は,剑桥开放数据サ▪▪トのすべてのデ▪▪タセットへのパブリックアクセスを提供しています。

この例では,データクリーニング,マンジング,および欠損値の削除や異なるタイムステップのタイムスタンプ付きデータの同期などの前処理といったさまざまなタスクを実行する方法を示します。また,时间表データコンテナーを使用して次を行い,可視化やグループ化された計算を含むデータ探索の詳細を示します。

  • 毎日の自転車交通量の調査

  • 自転車交通量と現地の天候条件の比較

  • さまざまな曜日や時間における自転車交通量の解析

时间表への自転車交通量デ、タの、ンポ、ト

コンマ区切りのテキストファルから自転車交通量デタのサンプルをンポトします。関数readtableは,表でデ,タを返します。関数を使用して最初の8行を表示します。

bikeTbl =可读(“BicycleCounts.csv”);头(bikeTbl)
时间戳日期总西行东行___________________ __________________ __________________ 2015-06-24 00:00:00{'星期三'}13 9 4 2015-06-24 01:00:00{'星期三'}3 30 2015-06-24 02:00:00{'星期三'}1 1 0 2015-06-24 04:00:00{'星期三'}1 1 0 2015-06-24 05:00:00{'星期三'}7 3 4 2015-06-24 06:00:00{'星期三'}36 6 30 2015-06-24 07:00:00{'星期三'}141 13 128

データにタイムスタンプがあるため,时间表を使用してデータを保存および解析すると便利です。时间表は table と似ていますが、データ行に関連付けられているタイムスタンプが含まれています。タイムスタンプ、つまり行時間はdatetimeまたは持续时间の値で表されます。datetime持续时间は,それぞれ時間または経過時間における時点を表す推奨デ,タ型です。

関数table2timetableを使用してbikeTblを时间表に変換します。readtableは表を返すため,変換関数を使用しなければなりません。table2timetableは表内の最初のdatetime変数または持续时间変数を时间表の行時間に変換します。行時間は行をラベル付けするメタデ,タです。ただし,时间表を表示すると,行時間と时间表の変数は同じように表示されます。表の変数は5つありますが,时间表の変数は4つである点に注意してください。

bikeData = table2时间表(bikeTbl);头(bikeData)
时间戳日期总西行东行___________________ __________________ __________________ 2015-06-24 00:00:00{'星期三'}13 9 4 2015-06-24 01:00:00{'星期三'}3 30 2015-06-24 02:00:00{'星期三'}1 1 0 2015-06-24 04:00:00{'星期三'}1 1 0 2015-06-24 05:00:00{'星期三'}7 3 4 2015-06-24 06:00:00{'星期三'}36 6 30 2015-06-24 07:00:00{'星期三'}141 13 128
bikeTblbikeData
名称大小字节类属性bikeData 9387x4 1412425时间表bikeTbl 9387x5 1487735表

時間とデ,タへのアクセス

変数一天を分类に変換します。直言データ型は,曜日名など,離散値の有限集合で構成されるデータ向けに設計されています。曜日順に表示されるようカテゴリをリストします。ドット添字を使用して,名前で変数にアクセスします。

bikeData。一天= categorical(bikeData.Day,{“星期天”“周一”“星期二”...“星期三”“星期四”“星期五”“星期六”});

时间表では,時間はデ,タ変数とは別に処理されます。时间表の属性にアクセスして,行時間が时间表の最初の次元であり,変数は2番目の次元であることを確認します。DimensionNamesプロパティは2の次元の名前を示し,VariableNamesプロパティは2番目の次元の変数の名前を示します。

bikeData。属性
ans = timeableproperties with properties: Description: " UserData: [] DimensionNames: {'Timestamp' 'Variables'} VariableNames: {'Day' 'Total' '西行''东行'}variabledescription: {} VariableUnits: {} variableccontinucontinuations: [] RowTimes: [9387x1 datetime] StartTime: 2015-06-24 00:00:00 SampleRate: NaN TimeStep: NaN CustomProperties:无自定义属性设置。使用addprop和rmprop修改CustomProperties。

既定で,table2timetableは表を时间表に変換したときに最初の次元名として时间戳を代入しています。これが元の表の変数名だったためです。次元の名前,およびその他の时间表メタデ,タは属性を使って変更できます。

次元の名前を时间数据に変更します。

bikeData.Properties.DimensionNames = {“时间”“数据”};bikeData。属性
ans = timeableproperties with properties: Description: " UserData: [] DimensionNames: {'Time' 'Data'} VariableNames: {'Day' 'Total' '西行''东行'}variabledescription: {} VariableUnits: {} variableccontinucontinuations: [] RowTimes: [9387x1 datetime] StartTime: 2015-06-24 00:00:00 SampleRate: NaN TimeStep: NaN CustomProperties:无自定义属性设置。使用addprop和rmprop修改CustomProperties。

时间表の最初の8行を表示します。

头(bikeData)
时间日期总西行东行___________________ ______________ __________________ 2015-06-24 00:00:00周三13 9 4 2015-06-24 01:00:00周三3 30 2015-06-24 02:00:00周三1 1 0 2015-06-24 04:00:00周三1 1 0 2015-06-24 05:00:00周三7 3 4 2015-06-24 06:00:00周三36 6 30 2015-06-24 07:00:00周三141 13 128

最も新しい行時間から最も古い行時間までの経過日数を確認します。変数を一度に 1 つずつ参照する場合、変数にはドット表記でアクセスできます。

elapsedTime = max(bikeData.Time) - min(bikeData.Time)
elapsedTime =持续时间9383:30:00
elapsedTime。格式=' d '
elapsedTime =持续时间390.98天

特定の日付の一般的な自転車数を調べるには,自転車の合計数の平均と,西および東へ走行する台数を計算します。

中かっこを使用してbikeDataの内容に@ @ンデックスを付け,数値デ@ @タを行列として返します。最初の8行を表示します。標準の表の添字を使用して複数の変数にアクセスします。

counts = bikeData{:,2:结束};计数(1:8,:)
ans =8×313 9 4 3 30 1 1 0 1 1 0 1 1 0 7 3 4 36 6 30 141 13 128

平均は数値デ,タにのみ適しているため,関数vartypeを使用して数値変数を選択できます。vartypeは、表または时间表に手動でインデックスを付けて変数を選択するよりも便利です。平均を計算し,値を省きます。

计数= bikeData{:,vartype(“数字”)};意思是(计数,“omitnan”
ans =1×349.8860 24.2002 25.6857

日付および時間によるデ,タの選択

休日に自転車に乗る人の数を確認するために,7月4日の休日のデ,タを調べます。2015年7月4日の行時間で时间表にaaplンデックスを付けます。行時間でesc escンデックスを付ける場合,時間が正確に一致しなければなりません。時間@ @ンデックスをdatetimeまたは持续时间の値,あるいは日付と時刻に変換できる文字ベクトルとして指定できます。複数の時間を1の配列として指定できます。

特定の日付と時刻を使用してbikeDataにンデックスを付けて,2015年7月4日のデタを抽出します。日付のみを指定すると,時刻は午前0時(00:00:00)とみなされます。

bikeData (“2015-07-04”:)
ans =1×4时间表时间一天总西行的往东的  ___________________ ________ _____ _________ _________ 2015-07-04就是周六8 7 1
D = {“2015-07-04 08:00:00”“2015-07-04 09:00:00”};bikeData (d,:)
ans =2×4时间表时间一天总西行的往东的  ___________________ ________ _____ _________ _________ 2015-07-04 08:00:00周六15 3 12 2015-07-04 09:00:00周六21 4 17

この手法を使用して1日全体を抽出するのは手間のかかる作業です。特定の時刻にesc escンデックスを付けず,時間の範囲を指定することもできます。時間範囲の添字をヘルパ,として作成するには,関数timerangeを使用します。

2015年7月4日全日を時間範囲として使用して时间表に対する添字を作成します。開始時間を7月4日の午前0時,終了時間を7月5日の午前0時に指定します。既定では,timerangeは開始時間から終了時間まで(終了時間は含まない)のすべての時間をカバします。1日全体の自転車数をプロットします。

Tr =时间范围(“2015-07-04”“2015-07-05”);jul4 = bikeData(tr,“总”);头(jul4)
时间合计___________________ _____ 2015-07-04 00:00:00 8 2015-07-04 01:00:00 13 2015-07-04 02:00:00 4 2015-07-04 03:00:00 1 2015-07-04 04:00:00 0 2015-07-04 05:00:00 1 2015-07-04 06:00:00 8 2015-07-04 07:00:00 16 .时间合计
酒吧(jul4.Time jul4.Total) ylabel (的自行车数量)标题(“2015年7月4日清点自行车”

图中包含一个轴对象。2015年7月4日,标题为Bicycle Counts的axes对象包含一个类型为bar的对象。

プロットから,交通量は1日を通して通常より多く,午後にかけて横ばい状態になることがわかります。多くの企業が休みであるため,プロットは通常の通勤時間の交通量は示していません。夕方に急増しているのは,暗くなってから行われる花火大会に起因すると思われます。これらのトレンドをさらに細かく調べるには,デ,タを通常の日と比較しなければなりません。

7 .月4 .日のデタを,7 .月の他の日付のデタと比較します。

jul = bikeData(时间范围(“2015-07-01”“2015-08-01”):);情节(jul.Time jul.Total)情节(jul4.Time jul4.Total) ylabel (“总数”)标题(“七月的自行车计数”)举行传奇(“自行车数”“七月四日单车清点”

图中包含一个轴对象。标题为Bicycle Counts in July的axes对象包含2个类型为line的对象。这些对象代表自行车计数,7月4日自行车计数。

プロットには,平日と週末の交通量の違いの要因とみられる変化が示されています。7月4日と5日の交通量パタンは週末の交通量パタンと一致します。7月5日は月曜日ですが,観察時に祝日として扱うことがよくあります。これらのトレンドは,さらに前処理と解析を行うことでより詳しく調べることができます。

时间表を使用した時間とデ,タの前処理

タムスタンプ付きデタセットは煩雑になることがよくあり,異常やエラが含まれる可能性もあります。时间表は異常やエラ,を解決するのに適しています。

时间表では,行時間を特定の順序にする必要はありません。行時間で並べ替えられてない行を含めることができます。时间表には同じ行時間をもつ複数の行を含めることもできますが、行に異なるデータ値が含まれていてもかまいません。行時間は、並べ替えられて一意であっても、サイズの異なるタイム ステップにより変化することがあります。timetable には欠損行時間を示すNaTまたはの値を含めることもできます。

时间表データ型には,欠損している時間,重複している時間,等間隔ではない時間を解決するさまざまな方法があります。また,デ,タをリサンプリングまたは集計して“規則的な”时间表を作成することもできます。規則的な时间表には並べ替えられた一意の行時間が含まれ,それらの行時間の間には,均一,つまり等間隔のタイムステップがあります。

  • 欠損している行時間を見けるには,ismissingを使用します。

  • 欠損している時間およびデ,タを削除するには,rmmissingを使用します。

  • 时间表をその行時間で並べ替えるには,sortrowsを使用します。

  • 一意の並べ替えられた行時間をも化学式时间表を作成するには,独特的调整时间を使用します。

  • 規則的な时间表を作成するには,等間隔の時間ベクトルを指定し,调整时间を使用します。

時間順での並べ替え

时间表が並べ替えられているかどうかを判定します。行時間が昇順にリストされる場合,时间表は並べ替えられています。

issorted (bikeData)
ans =逻辑0

时间表を並べ替えます。関数sortrowsは行を行時間で最も古い時間から最も新しい時間に並べ替えます。重複している行時間をも行がある場合,sortrowsはすべての重複を出力にコピ,します。

bikeData = sortrows(bikeData);issorted (bikeData)
ans =逻辑1

欠損している時間とデ,タの特定および削除

时间表では,その変数またはその行時間に欠損データインジケーターを含めることができます。たとえば,欠損している数値を,欠損しているdatetime値をNaTとして示すことができます。欠損値を代入,検索,削除および埋めるには,それぞれ関数standardizeMissingismissingrmmissingおよびfillmissingを使用できます。

时间表変数で欠損値を検索およびカウントします。この例では,欠損値はデ,タが収集されなかった状況を示します。

missData = ismissing(bikeData);总和(missData)
ans =1×41 3 3 3

ismissingからの出力は,表と同じサ,表ズの逻辑行列で,欠損デ,タ値をtrueと識別しています。欠損デタンジケタを示す行を表示します。

idx = any(misdata,2);bikeData (idx:)
ans =3×4时间表时间一天总西行的往东的  ___________________ ___________ _____ _________ _________ 2015-08-03就是周一南南南南南南2015-08-03 01:00:00 NaT <定义>南南南

ismissing (bikeData)は時間ではなく时间表変数内の欠損デ,タのみを検出します。欠損している行時間を検出するには,行時間でismissingを呼び出します。

mistimes = ismissing(bikeData.Time);bikeData (missTimes:)
ans =2×4时间表时间一天总西行的往东的  ____ ___________ _____ _________ _________ NaT <定义>南南南NaT周五6 3 3

この例では,欠損時間または欠損デ,タ値は測定エラ,を示しており,除外することができます。rmmissingを使用して,欠損デ,タ値と欠損行時間を含む表の行を削除します。

bikeData = rmmissing(bikeData);sum (ismissing (bikeData))
ans =1×40 0 0 0
sum (ismissing (bikeData.Time))
Ans = 0

重複する時間とデ,タの削除

重複する時間または重複するデ,タ行あるいはその両方があるかどうかを確認します。厳密に一致する重複は測定エラ,とみなされる可能性があるため除外します。並べ替えられた時間の差が正確に0になる場所を検出して重複する時間を特定します。

idx = diff(bikeData.Time) = 0;dup = bikeData.Time(idx)
dup =3 x1 datetime2015-08-21 00:00:00 2015-11-19 23:00:00 2015-11-19 23:00:00

3の時間が繰り返され,2015年11月19日は2回繰り返されています。繰り返されている時間に関連するデ,タを確認します。

bikeData (dup (1):)
ans =2×4时间表时间一天总西行的往东的  ___________________ ______ _____ _________ _________ 2015-08-21就是周五14 9 5 2015-08-21就是星期五11 7 4
bikeData (dup (2):)
ans =3×4时间表时间一天总西行的往东的  ___________________ ________ _____ _________ _________ 2015-11-19 23:00:00周四17 15 2 2015-11-19 23:00:00周四17 15 2 2015-11-19 23:00:00周四17 15 2

1目は時間が重複していますがデタは重複していません。その他は完全に重複しています。时间表行では、複数行において同一の行時間と同一のデータ値が含まれている場合、重複とみなされます。独特的を使用して时间表内の重複行を削除できます。関数独特的は,行時間による行の並べ替えも行います。

bikeData = unique(bikeData);

時間は重複しているもののデタが重複していない行にいては,何らかの解釈が必要です。これらの時間の周辺のデ,タを調べます。

D = dup(1) +小时(-2:2);bikeData (d,:)
ans =5×4时间表时间日期总西行东行___________________ _____________ __________________ 2015-08-20 22:00:00周四40 30 10 2015-08-20 23:00:00周四25 18 7 2015-08-21 00:00:00周五11 7 4 2015-08-21 00:00:00周五14 9 5 2015-08-21 02:00:00周五6 5 1 .

この例では,データとその前後の時間が一貫しているため,重複している時間は間違いである可能性があります。01:00:00を表している可能性がありますが,これが何時だったかは不明です。デ,タを累積して,両方の時点におけるデ,タを含めることができます。

sum (bikeData {dup (1), 2:})
ans =1×325 16 9

これは,手動で実行できる唯一のケ,スです。ただし,行数が多い場合は,関数调整时间でこの計算を実行できます。集計のために関数总和を使用して一意の時間のデ,タを累積します。总和は数値データには適していますが、timetable の categorical データには適していません。vartypeを使用して,数値変数を特定します。

Vt = vartype(“数字”);t = unique(bikeData.Time);numData = retime(bikeData(:,vt),t,“和”);头(numData)
时间总西行东行___________________ ______________ _________ 2015-06-24 00:00:00 13 9 4 2015-06-24 01:00:00 3 30 2015-06-24 02:00:00 1 1 0 2015-06-24 04:00:00 1 1 0 2015-06-24 05:00:00 7 3 4 2015-06-24 06:00:00 36 6 30 2015-06-24 07:00:00 141 13 128

直言データは集計できませんが,1つのラベルが1日全体を表すため,各日付で最初の値をとります。同じ時間ベクトルで调整时间演算を実行し,时间表を連結することができます。

Vc = vartype(“分类”);catData = retime(bikeData(:,vc),t,“firstvalue”);bikeData = [catData,numData];bikeData (d,:)
ans =4×4的时间表时间日期总西行东行___________________ _____________ __________________ 2015-08-20 22:00:00周四40 30 10 2015-08-20 23:00:00周四25 18 7 2015-08-21 00:00:00周五25 16 9 2015-08-21 02:00:00周五6 5 1 .

時間間隔の均一性の確認

デタには1時間の等間隔タムステップがあるようです。これが时间表のすべての行時間にあてはまるかどうかを確認するには,関数isregularを使用します。isregularは、重複または欠損している時間(NaTまたは)のない,並べ替えられた等間隔の時間(単調増加)の場合,真正的を返します。

isregular (bikeData)
ans =逻辑0

0)の出力は,时间表の時間が等間隔でないことを示します。時間間隔をさらに詳しく調べます。

dt = diff(bikeData.Time);[min (dt);马克斯(dt)]
ans =2 x1持续时间00:30:00 03:00:00

时间表を一定の時間間隔にするには,调整时间または同步を使用して,目的の時間間隔を指定します。

1日の自転車交通量の確認

関数调整时间を使用して1日あたりの台数を確認します。总和メソッドを使用して各日付のカウントデ,タを累積します。これは数値データには適していますが,时间表の直言データには適していません。vartypeを使用して変数をデ,タ型で識別します。

dayCountNum = retime(bikeData(:,vt),“每天”“和”);头(dayCountNum)
时间总西行东行___________________ ______________ _________ 2015-06-24 00:00:00 2141 1141 1000 2015-06-25 00:00:00 2106 1123 983 2015-06-26 00:00:00 1748 970 778 2015-06-27 00:00:00 695 346 349 2015-06-28 00:00:00 153 83 70 2015-06-29 00:00:00 1841 978 863 2015-06-30 00:00:00 2170 1145 1025 2015-07-01 00:00:00 997 544 453

上記のとおり,调整时间演算を再度実行し,適切なメソッドを使用して直言データを表し,时间表を連結できます。

dayCountCat = retime(bikeData(:,vc),“每天”“firstvalue”);dayCount = [dayCountCat,dayCountNum];头(dayCount)
时间日期总西行东行___________________ ______________ __________________ 2015-06-24周三00:00:00 2141 1141 1000 2015-06-25周四00:00:00 2106 1123 983 2015-06-26周五00:00:00 1748 970 778 2015-06-27周六00:00:00 695 346 349 2015-06-28周日00:00:00 153 83 70 2015-06-29周一00:00:00 1841 978 863 2015-06-30周二00:00:00 2170 1145 1025 2015-07-01周三00:00:00 997 544 453

自転車数と気象デ,タの同期

自転車数と気象デタを比較して,サクリング行動に対する気象の影響を調べます。暴風雨など,マサチューセッツ州ボストンの過去の気象データが含まれる気象の时间表を読み込みます。

负载BostonWeatherData头(weatherData)
时间温度f湿度事件___________ ____________ ________ ____________ 2015年7月01日72 78雷暴事件2015年7月02日72 60无2015年7月03日70 56无2015年7月04日67 75无2015年7月05日72 67无2015年7月06日74 69无2015年7月07日75 77雨2015年7月08日79 68雨

时间表の時間と変数を集計するには,関数总结を使用します。

总结(weatherData)
RowTimes: Time: 383x1 datetime值:Min 01- july -2015中位数08- january -2016最大17- july 2016 TimeStep 24:00:00变量:TemperatureF: 383x1 double值:Min 2中位数55 Max 85湿度:383x1 double值:Min 29中位数64 Max 97事件:383x1分类值:雾7冰雹1雨108雨雪4雪18雷暴12无233

同步を使用して,自転車デ,タと気象デ,タを結合して共通時間ベクトルにします。関数同步のリファレンスページに記載されているいずれかの方法を使って时间表データをリサンプリングまたは集計できます。

両方の时间表のデータを同期して,共通時間ベクトル(個々の日次時間ベクトルの共通部分から作成)にします。

数据=同步(dayCount,weatherData,“十字路口”);头(数据)
时间日期总西向东向温度f湿度事件___________________ ______________ __________________ ____________ ________ ____________ 2015-07-01周三00:00:00 997 544 453 72 78雷雨2015-07-02周四00:00:00 1943 1033 910 72 60无2015-07-03 00:00:00周五870 454 416 70 56无2015-07-04 00:00:00周六669 328 341 67 75无2015-07-05周日00:00:00 702 407 295 72 67无2015-07-06周一00:00:00 1900 1029 871 74 69无周二2106 1140 966 75 77雨2015-07-08 00:00:00周三1855 984 871 79 68雨

個々のy軸の自転車交通量と屋外の気温を比較して,トレンドを調べます。可視化のためにデ,タから週末を削除します。

idx = ~isweekend(data.Time);weekdayData =数据(idx,{“TemperatureF”“总”});图yyaxis情节(weekdayData。时间,weekdayData.Total) ylabel(“自行车数”) yyaxis正确的情节(weekdayData.Time weekdayData.TemperatureF) ylabel (“温度(\circ F)”)标题(“自行车数量和温度随时间变化”xlim([min(data.Time)) max(data.Time)])

图中包含一个轴对象。标题为Bicycle Counts and Temperature Over Time的axis对象包含2个类型为line的对象。

プロットから,交通量と気象デ,タが同じようなトレンドを示していることがわかります。プロットを拡大します。

xlim ([datetime (“2015-11-01”)、日期时间(“2016-05-01”)))

图中包含一个轴对象。标题为Bicycle Counts and Temperature Over Time的axis对象包含2个类型为line的对象。

トレンドは同様で,寒い日ほど自転車に乗る人が少ないことを示しています。

曜日および時間による解析

曜日や時間など異なる間隔に基づいてデ,タを調べます。変数に対してグル,プ化された計算を実行するためにvarfunを使用して1日あたりの合計数を確認します。関数总和を関数ハンドルとともに指定し,名前と値のペアでグル,プ化変数および目的の出力タ,プも指定します。

byDay = varfun(@sum,bikeData,“GroupingVariables”“天”...“OutputFormat”“表”
byDay =7×5表Day GroupCount sum_Total sum_西行sum_东行_________ __________ _________ _____________ _____________周日1344 25315 12471 12844周一1343 79991 39219 40772周二1320 81480 39695 41785周三1344 86853 41726 45127周四1344 87516 42682 44834周五1342 76643 36926 39717周六1343 30292 14343 15949
图酒吧(byDay {: {“sum_Westbound”“sum_Eastbound”}})传说({“西行”“往东的”},“位置”“eastoutside”) xticklabels ({“太阳”“我的”“星期二”“结婚”“星期四”“星期五”“坐”})标题(“按星期数自行车”

图中包含一个轴对象。标题为Bicycle Count by Day of Week的axes对象包含2个类型为bar的对象。这些对象分别代表西行和东行。

棒グラフには,交通量は平日の方が多いことが示されています。また,東方向と西方向においても違いがあります。これは,街に入るときと街から出るときに異なるルートを使用する傾向があることを示している可能性があります。街に入った日と出ていく日が異なる人がいる可能性も考えられます。

時刻を確認し,varfunを使用してグル,プ別に計算を行います。

bikeData。HrOfDay =小时(bikeData.Time);byHr = varfun(@mean,bikeData(:,{“西行”“往东的”“HrOfDay”}),...“GroupingVariables”“HrOfDay”“OutputFormat”“表”);头(byHr)
HrOfDay GroupCount mean_西向mean_东向_______ __________ ______________ ______________ 0 389 5.4396 1.7686 1 389 2.7712 0.87147 2 391 1.8696 0.58312 3 391 0.7468 0.289 4 391 0.52685 1.0026 5 391 0.70588 4.7494 6 391 3.1228 22.097 7 391 9.1176 63.54
栏(byHr {: {“mean_Westbound”“mean_Eastbound”}})传说(“西行”“往东的”“位置”“eastoutside”)包含(“一天中的一小时”) ylabel (“自行车数”)标题(“按小时计算平均自行车数量”

图中包含一个轴对象。标题为Mean Bicycle Count by Hour of Day的axis对象包含2个类型为bar的对象。这些对象分别代表西行和东行。

通常の通勤時間である午前9時と午後5時頃に交通量が急増しています。また,東方向と西方向でトレンドが異なります。概して,西方向はケンブリッジエリアを囲む住宅街と大学に向かいます。東方向はボストンに向かう方向です。

西方向と東方向を比較すると,交通量が夕方に多くなるのは西方向です。これは,大学のスケジュールに関連があるということと,このエリアのレストランへと向かう交通量があることを示している可能性があります。時刻だけでなく曜日別のトレンドも確認します。

byHrDay = varfun(@sum,bikeData,“GroupingVariables”, {“HrOfDay”“天”},...“OutputFormat”“表”);头(byHrDay)
HrOfDay Day GroupCount sum_Total sum_西行sum_东行_______ _________ __________ _________ _____________ _____________ 0星期日56 473 345 128 0星期一55 202 145 57 0星期二55 297 213 84 0星期三56 374 286 88 0星期四56 436 324 112 0星期五55 442 348 94 0星期六56 580 455 125 1星期日56 333 259 74

曜日が変数になるように时间表を調整するには,関数unstackを使用します。

hrAndDayWeek = unstack(byHrDay(:,{“HrOfDay”“天”“sum_Total”}),“sum_Total”“天”);头(hrAndDayWeek)
hrfday星期日星期一星期二星期三星期四星期五星期六_______ ______ ______ _______ _________ ________ ______ ________ 0 473 202 297 374 436 442 580 1 333 81 147 168 173 183 332 2 198 77 68 93 141 254 3 86 41 43 44 50 61 80 4 51 81 117 101 108 80 60 5 105 353 407 419 381 340 128 6 275 1750 1867 2066 1927 1625 351 7 553 5355 5515 5818 5731 4733 704
ribbon(hrAndDayWeek. hrofday,hrAndDayWeek{:,2:end}) ylim([0 24]) xlim([0 8]) xticks(1:7) xticklabels({“太阳”“我的”“星期二”“结婚”“星期四”“星期五”“坐”}) ylabel (“小时”)标题(“按小时和星期数自行车”

图中包含一个轴对象。标题为Bicycle Count by Hour and Day of Week的axis对象包含7个类型为surface的对象。

月曜日から金曜日の平日には,交通量はラッシュアワーにピークとなり,夕方に減少するという同様のトレンドがみられます。金曜日は交通量が少なくなっていますが,全体的なトレンドは他の平日と似ています。土曜日と日曜日のトレンドは似ており,ラッシュアワ,のピ,クがなく,午後の交通量が増しています。月曜日から金曜日は夜のトレンドも同様ですが,金曜日は交通量が減少します。

ラッシュアワ,時の交通量の解析

1日全体のトレンドを調べるためには,ラッシュアワ,の時間でデ,タを分割します。関数离散化を使用して異なる時間帯または時間単位を使用できます。たとえば,デ,タをAMRush一天PMRushのグル,プに分けます。次に,varfunを使用してグル,プ別の平均を計算します。

bikeData。HrLabel =离散化(bikeData.)HrOfDay,[0、6、10、15、19日24),“分类”...“我”“RushAM”“天”“RushPM”“点”});byHrBin = varfun(@mean,bikeData(:,{“总”“HrLabel”}),“GroupingVariables”“HrLabel”...“OutputFormat”“表”
byHrBin =5×3表HrLabel GroupCount mean_Total _______ __________ __________ AM 2342 3.5508 RushAM 1564 94.893 Day 1955 45.612 RushPM 1564 98.066 PM 1955 35.198
bar(byHrBin.mean_Total) cats = categories(byHrBin.HrLabel);xticklabels(猫)标题(“高峰时段平均自行车数量”

图中包含一个轴对象。标题为Mean Bicycle Count During Rush Hours的axes对象包含一个类型为bar的对象。

一般的に,このエリアでは夕方と朝のラッシュアワーの交通量は他の時間帯のおよそ2倍になっています。このエリアの早朝の交通量は非常に少ないのですが,夕方と夜の交通量はまだ多く,朝と夕方のラッシュアワーを除く日中の交通量に匹敵します。

参考

||||||||||

関連するトピック