[実施の形態1]
図1は、情報処理システム10の構成を示す説明図である。情報処理システム10は、サーバ20、クライアント30、センサ制御装置12、携帯情報機器17およびネットワーク19を備える。携帯情報機器17には、生体センサ16が無線により接続されている。センサ制御装置12には、ドアセンサ13、カメラ14およびベッドセンサ15が接続されている。サーバ20は、本実施の形態の情報処理装置の一例である。サーバ20およびクライアント30の構成については後述する。
ネットワーク19は、たとえばインターネット、公衆回線網、専用回線網等の情報通信網である。携帯情報機器17は、被験者が身に着けたスマートフォン、携帯電話、ウェアラブルコンピュータなどの情報機器である。携帯情報機器17は、無線LAN(Local Area Network)または移動体通信回線を介してネットワークに接続されている。生体センサ16は、被験者の脈拍、血中酸素濃度、呼吸数等を計測するセンサである。携帯情報機器17には、複数の生体センサ16が接続されていても良い。また、携帯情報機器17には、歩数計等の生体センサ16が内蔵されていても良い。
ドアセンサ13は、ドアの開閉またはドアを人が通過したことを検知するセンサである。ドアセンサ13は被験者の寝室のドア等、被験者の住居の各ドアに取り付けられている。カメラ14は、映像を使用して被験者の動作を検出するセンサである。カメラ14は、被験者の寝室内部等、被験者の住居の各所に取り付けられている。ベッドセンサ15は、就寝中の被験者の状態を検出するセンサである。ベッドセンサ15は、被験者のベッドに取り付けられている。センサ制御装置12には、室内の温度を検知する温度計、室内の湿度を検知する湿度計、室内の明るさを検知する照度計等の各種センサが接続されていても良い。またセンサ制御装置12には、空調装置、照明装置等の家屋内の各種機器の運転状態を検知するセンサが接続されていても良い。また、センサが直接ネットワーク19に接続されていても良い。
センサ制御装置12および携帯情報機器17は、接続された各センサから取得した情報を解析して得た被験者の状態の変化を、ネットワーク19を介してサーバ20に送信する。送信する情報の例は後述する。なお、情報処理システム10には、たとえば被験者の住居と職場等、複数の場所にセンサ制御装置12が接続されていても良い。
たとえばICカードを使用して自動改札機を通過したという情報および買い物をしたという情報等が、ICカードの運営事業者のサーバからネットワーク19を介してサーバ20に送信されても良い。たとえば被験者の心電図を24時間にわたって記録したホルタ心電図のデータを医療機関で解析して得た情報がサーバ20に送信されても良い。被験者が携帯情報端末を操作して入力した、たとえば「薬を飲んだ」「頭痛がする」等、センサでは検知しきれない情報をサーバ20に送信しても良い。
図2は、サーバ20およびクライアント30の構成を示す説明図である。サーバ20は、サーバCPU(Central Processing Unit)22、主記憶装置23、補助記憶装置24、通信部25、およびバスを備える。本実施の形態のサーバ20は、汎用のパソコンまたはデータセンタに設置された大型計算機等である。
サーバCPU22は、本実施の形態に係るプログラムを実行する演算制御装置である。サーバCPU22には、一または複数のCPUまたはマルチコアCPU等が使用される。サーバCPU22は、バスを介してサーバ20を構成するハードウェア各部と接続されている。
主記憶装置23は、SRAM(Static Random Access Memory)、DRAM(Dynamic Random Access Memory)、フラッシュメモリ等の記憶装置である。主記憶装置23には、サーバCPU22が行う処理の途中で必要な情報およびサーバCPU22で実行中のプログラムが一時的に保存される。
補助記憶装置24は、SRAM、フラッシュメモリ、ハードディスクまたは磁気テープ等の記憶装置である。補助記憶装置24には、サーバCPU22に実行させるプログラム、事象DB41、時系列DB42、組み合わせ回数DB43、発生数DB44および組み合わせ確率DB45等、プログラムの実行に必要な各種情報が保存される。通信部25は、ネットワーク19との通信を行うインターフェイスである。
クライアント30は、クライアントCPU32、主記憶装置33、補助記憶装置34、通信部35、入力部36、表示部37およびバスを備える。本実施の形態のクライアント30は、汎用のパソコン、タブレットまたはスマートフォン等である。
クライアントCPU32は、本実施の形態に係るプログラムを実行する演算制御装置である。クライアントCPU32には、一または複数のCPUまたはマルチコアCPU等が使用される。クライアントCPU32は、バスを介してクライアント30を構成するハードウェア各部と接続されている。
主記憶装置33は、SRAM、DRAM、フラッシュメモリ等の記憶装置である。主記憶装置33には、クライアントCPU32が行う処理の途中で必要な情報およびクライアントCPU32で実行中のプログラムが一時的に保存される。
補助記憶装置34は、SRAM、フラッシュメモリ、ハードディスクまたは磁気テープ等の記憶装置である。補助記憶装置34には、クライアントCPU32に実行させるプログラムおよびプログラムの実行に必要な各種情報が保存される。通信部35は、ネットワーク19との通信を行うインターフェイスである。
図3は、事象DB41のレコードレイアウトを示す説明図である。事象DB41は、記号と本実施の形態のプログラムが処理する被験者の状態の変化の内容とを関連付けるDBである。事象DB41は、記号フィールドおよび内容フィールドを備える。記号フィールドには、文字または数値等で示す記号が記録されている。内容フィールドには、記号フィールドに記録された記号が示す被験者の状態の変化の内容が記録されている。なお、図3では、「ベッドから降りた」等の被験者の動作を記録したレコードを例示しているが、たとえば「寝室の照明が消えた」「室温が28度を超えた」等、被験者の周囲の環境変化を内容フィールドに記録したレコードが含まれていても良い。また、たとえば「歩行時間が10分を超えた」等、被験者の状態の継続時間の経過を内容フィールドに記録したレコードが含まれていても良い。以後の説明では、このように継続時間の経過を示す事象の場合にも、事象が発生した、または事象が生じたと表現する場合がある。記号DB41は、1つの記号について、1つのレコードを有する。
図4は、時系列DB42のレコードレイアウトを示す説明図である。時系列DB42は、発生した事象を示す記号と、その事象に関連付けられた時刻、たとえばその事象が発生した時刻とを関連づけるDBである。時系列DB42は、時刻フィールドおよび事象フィールドを備える。時刻フィールドには、日時を示す数値が記録されている。説明を簡単にするために、以後の説明では時刻フィールドに記録されている数字の単位に「秒」を使用する。なお、時刻フィールドには、たとえばマイクロ秒またはナノ秒など、同時に複数の事象が発生しない程度に細かい単位で時刻を識別できる数値を使用する。
事象フィールドには、時刻フィールドに記録された時刻に発生した被験者の状態の変化を示す記号が記録されている。事象フィールドに記録された記号をキーとして事象DB41を検索することにより、実際に発生した事象の内容を知ることができる。時系列DB42は、事象に対応する1つの時刻について1つのレコードを有する。時系列DB42のレコードは、時刻フィールドの昇順に配列されている。
図5は、組み合わせ回数DB43のレコードレイアウトを示す説明図である。組み合わせ回数DB43は、第1事象の後、所定の時間内に第2事象が発生した回数を記録するDBである。ここで、所定の時間は第1事象が発生した事の影響を受けて、第2事象が発生したという因果関係または相関関係が存在し得る時間をいう。以後の説明ではこの所定の時間を影響時間と呼ぶ。影響時間の長さは、たとえば30秒間である。
組み合わせ回数DB43は、第1事象フィールドおよび第2事象フィールドを備える。第1事象フィールドは、図3を使用して説明した事象DB41の記号フィールドに対応するフィールドを備える。第2事象フィールドには、図3を使用して説明した事象DB41の記号フィールドに対応する記号が記録されている。組み合わせ回数DB43は、事象DB41の記号フィールドと同数のレコードを有する。組み合わせ回数DB43は、時系列DB42を解析して作成する。
たとえば、図5中の第2事象フィールドがAのレコードの、Dフィールドには、179という数字が記録されている。これは、Dの事象が発生した後、所定の影響時間内にAの事象が発生した回数が179回である事を示している。ここで、影響時間は、発生した事象が他の事象に影響を与える可能性のある時間である。影響時間は、あらかじめ補助記憶装置24に記憶されている。本実施の形態においては、影響時間が20秒の場合を例にして説明する。
図6は、組み合わせ時刻DBのレコードレイアウトを示す説明図である。組み合わせ時刻DBは、第1事象の後、所定の影響時間内に第2事象が発生した時刻を記録するDBである。組み合わせ時刻DBは、第1事象フィールド、第2事象フィールドおよび時刻フィールドを備える。第1事象フィールドには、第1事象を示す記号が記録されている。第2事象フィールドには、第2事象を示す記号が記録されている。時刻フィールドには、第2事象が発生した時刻が記録されている。組み合わせ時刻DBは、影響時間内に発生した第1事象と第2事象の一つの組み合わせについて、1つのレコードを有する。
図7は、発生数DB44のレコードレイアウトを示す説明図である。発生数DB44は、各事象とその発生回数とを関連づけるDBである。発生数DB44は、事象フィールドと発生数フィールドを備える。事象フィールドには、図3を使用して説明した事象DB41の記号フィールドに対応する記号が記録されている。発生数フィールドには、各事象の発生回数が記録されている。発生数DB44は、事象DB41の記号フィールドと同数のレコードを有する。発生数DB44は、時系列DB42を解析して作成する。
図8は、組み合わせ確率DB45のレコードレイアウトを示す説明図である。組み合わせ確率DB45は、第1事象の後、所定の影響時間内に第2事象が発生した確率を記録するDBである。組み合わせ確率DB45は、第1事象フィールドおよび第2事象フィールドを備える。第1事象フィールドは、図3を使用して説明した事象DB41の記号フィールドに対応するフィールドを備える。第2事象フィールドには、図3を使用して説明した事象DB41の記号フィールドに対応する記号が記録されている。組み合わせ回数DB43は、事象DB41の記号フィールドと同数のレコードを有する。組み合わせ確率DB45は、組み合わせ回数DB43および発生数DB44の組み合わせを用いて作成する。
たとえば、図8中の第2事象フィールドがAのレコードの、Cフィールドには、14%という数字が記録されている。これは、図5に示すDの事象が発生した後、所定の影響時間内にAの事象が発生した回数である179回と、図7に示すDの事象が発生した回数1324回との比をパーセントで表示した値である。
図9は、窓DBのレコードレイアウトを示す説明図である。窓DBは、時刻フィールドに記録された時間が影響時間の範囲内であるレコードを、時系列DB42から取り出したDBである。窓列DBは、時刻フィールドおよび事象フィールドを備える。時刻フィールドには、日時を示す数値が記録されている。時系列DB42は、事象に対応する1つの時刻について1つのレコードを有する。窓DBは、時系列DB42を基に随時作成される。
図10から図13は、事象の発生状態の例を示す説明図である。図10から図13を使用して、本実施の形態で解析する事象の例を説明する。図10から図13の横軸は時間である。縦軸は発生した事象の記号を示す。黒丸は、横軸で示す時刻に、縦軸で示す事象が発生したことを示す。図10から図13は、図4を使用して説明した時系列DB42に記録された情報を図で表現したものである。
図10は、0秒から200秒までの範囲の時間における事象の発生状態を示す。本実施の形態においては、20秒付近、110秒付近および170秒付近の、影響時間である20秒よりも短い時間帯に事象が集中している。各々の事象が集中した時間帯同士は、影響時間である20秒よりも離れている。
図11は、図10の横軸が10秒から20秒の範囲を拡大した図である。図11に黒丸で示す9個の事象の集合は、影響時間の範囲内に発生しているので、1つの事象と、その後に発生した事象との間に何らかの因果関係または相関関係が存在する可能性がある。また、単なる偶然で近接した時間に複数の事象が発生した可能性もある。数多くのデータを収集して解析した場合に、影響時間内に前後して発生する確率が高い事象の間には、相関関係または因果関係が存在する可能性が高いと考えられる。影響時間内に前後して発生する事象の発生確率を算出する方法を以下に説明する。
図10に示すように、図11に黒丸で示す9個の事象の集合は、集合外の事象とは影響時間以上の時間が離れている。したがって、これらの9個の事象は、集合外の事象の発生には影響を与えず、また集合外の事象の発生からの影響も受けないと推定できる。したがって、図11に示す9個の事象の間の関係を総当たりで調べることにより、10秒から20秒の範囲のデータの解析を行える。このような、影響時間よりも短く、しかも集合外の事象とは影響時間以上の時間が離れている、すなわち隔離されている事象の集合を、以後の説明では完全隔離集合と呼ぶ。
因果関係または相関関係の存在し得る事象の組み合わせの数え方について、具体的に説明する。11秒に発生しているQの後、影響時間の範囲内では「R、S、X、U、W、T、Z、V」の各イベントが発生している。したがって、サーバCPU22は、図5に示す組み合わせ回数DB43の第1事象がQ、第2事象が「R、S、X、U、W、T、Z、V」のフィールドに、各々1を加算する。同様に12秒に発生しているRの後、影響時間の範囲内では「S、X、U、W、T、Z、V」の各イベントが発生している。したがって、サーバCPU22は、図5に示す組み合わせ回数DB43の第1事象がR、第2事象が「S、X、U、W、T、Z、V」のフィールドに、各々1を加算する。このように、サーバCPU22は、完全隔離集合から時順に2つのイベントを繰り返し抽出し、その2つのイベントの発生回数を繰り返しカウントし、その発生回数を組み合わせ回数DB43に記録する処理を、全ての完全隔離集合に対して行う。
次に、集合外の事象とは影響時間以上の時間が離れている、すなわち集合外の事象とは隔離されているが、集合内の最初の事象から最後の事象までの時間が影響時間よりも長い事象の集合の場合について説明する。このような集合を、以後の説明では準隔離集合と呼ぶ。図12および図13は、準隔離集合の例を示す。準隔離集合の場合にも、集合外の事象の発生には影響を与えず、また集合外の事象の発生からの影響も受けないと推定する。さらに、たとえば492秒に発生している事象Zと、526秒に発生している事象Yとの間は、影響時間である20秒よりも長い時間離れているので、両者の間には因果関係も相関関係も無いと推定できる。
このような準隔離集合の場合に、組み合わせ回数DB43に第1事象と第2事象との組み合わせの回数を記録する方法について説明する。まず、サーバCPU22は、図12に示すように1番目の事象から影響時間内の事象を抽出した窓DBを作成する。作成した窓DBの例を図9に示す。サーバCPU22は、組み合わせ回数DB43の第1事象が窓DB内の最初のレコードの事象であるZ、第2事象が窓DB内の「V、Q、R」のフィールドに、各々1を加算する。
その後、サーバCPU22は、図13に示すように2番目の事象から影響時間内の事象を抽出した窓DBを作成する。サーバCPU22は、組み合わせ回数DB43の第1事象が窓DB内の最初のレコードの事象であるV、第2事象が窓DB内の「Q、R、Y」のフィールドに、各々1を加算する。このように窓DBを作成する位置を時間軸上で順次ずらしていくことにより、サーバCPU22は、準隔離集合内で因果関係または相関関係のある可能性のある組み合わせを組み合わせ回数DB43に記録する。サーバCPU22は、すべての準隔離集合について以上の操作を繰り返す。
以上の操作により、サーバCPU22は、時系列DB42に記録された事象のうち、影響時間内の事象の組み合わせを全て組み合わせ回数DB43に記録することができる。
さらにサーバCPU22は、時系列DB42に記録された各事象の数を数え、発生数DB44に記録する。図7に示す発生数DB44は、時系列DB42に記録されたAの事象は2132回、Bの事象は5021回であることを示している。
サーバCPU22は、組み合わせ回数DB43の各レコードのAフィールドに記録された値と、発生数DB44のAのレコードの発生回数フィールドに記録された値との比を求め、組み合わせ確率DB45の対応するフィールドに記録する。Bフィールド以降も同様に比を求めることにより、サーバCPU22は組み合わせ確率DB45を作成する。組み合わせ確率DB45には、第1事象が発生した場合に、影響時間内に第2事象が発生する確率が記録されている。
図14は、プログラムの処理の流れを示すフローチャートである。図14に示すプログラムは、時系列DB42からレコードを取得して、影響時間内に2つの事象の組み合わせが発生する確率を算出するプログラムである。図14を使用して、本実施の形態のプログラムの処理の流れを説明する。
サーバCPU22は、組み合わせ回数DB43および組み合わせ時刻DBを初期化する(ステップS501)。すなわちサーバCPU22は組み合わせ回数DB43の各フィールドの値を初期値である0に設定する。さらに、サーバCPU22は、組み合わせ時刻DBのレコードを全て削除する。
サーバCPU22は、時系列DB42内の解析を開始する位置および終了する位置を取得する(ステップS502)。ここで、サーバCPU22は解析を開始する位置および終了する位置を、被験者の状態を解析する医師等のユーザによる入力を通信部25、ネットワーク19、通信部35を介して入力部36から取得する。サーバCPU22は、グループ取得のサブルーチンを起動する(ステップS503)。グループ取得のサブルーチンは、時系列DB42内のデータから、1つ前のイベントと1つ後のイベントの間の時間差が影響時間以上である場合に、その2つのイベントを用いてグループを取得するサブルーチンである。グループ取得のサブルーチンの処理の流れは後述する。
サーバCPU22は、取得したグループの最初のイベントと最後のイベントとの間の時間が影響時間以下であるか否かを判定する(ステップS504)。影響時間以下である場合は(ステップS504でYES)、サーバCPU22は完全隔離カウントのサブルーチンを起動する(ステップS505)。完全隔離カウントのサブルーチンは、完全隔離集合内のイベントの組み合わせを組み合わせ回数DB43に記録するサブルーチンである。完全隔離カウントのサブルーチンの処理の流れは後述する。
影響時間より長い場合は(ステップS504でNO)、サーバCPU22は準隔離カウントのサブルーチンを起動する(ステップS506)。準隔離カウントのサブルーチンは、準隔離集合内のイベントの組み合わせを組み合わせ回数DB43に記録するサブルーチンである。準隔離カウントのサブルーチンの処理の流れは後述する。
ステップS505またはステップS506の終了後、サーバCPU22は時系列DB42の解析を終了したか否かを判定する(ステップS507)。サーバCPU22は、解析を終了する位置を、前述のとおりステップS502で取得する。終了していないと判定した場合は(ステップS507でNO)、サーバCPU22はステップS503に戻る。終了したと判定した場合は(ステップS507でYES)、サーバCPU22はステップS502で取得した開始時刻から終了時刻までの間の各事象の数を数えて発生数DB44を作成する(ステップS508)。サーバCPU22は、組み合わせ回数DB43と発生数DB44から第1事象が発生した場合に影響時間内に第2事象が発生する確率を算出して、組み合わせ確率DB45に記録する(ステップS509)。サーバCPU22は、以上の処理で作成した組み合わせ確率DB等を通信部25、ネットワーク19および通信部35を介してクライアント30の表示部37に表示する(ステップS510)。表示の例については後述する。その後、サーバCPU22は処理を終了する。
図15は、グループ取得のサブルーチンの処理の流れを示すフローチャートである。グループ取得のサブルーチンは、時系列DB42内のデータから、一つ前および一つ後ろの事象との間の時間が影響時間以上離れた事象のグループを取得するサブルーチンである。
サーバCPU22は、カウンタIを開始位置に設定する(ステップS521)。ここで開始位置は、時系列DB42中の本サブルーチンによる処理を開始する最初のレコードを示す番号である。初めて本サブルーチンを実行する場合には、開始位置はユーザによる入力を受け付けた解析を開始する時間に対応する時系列DB42内のレコードの番号である。2回目以降に本サブルーチンを実行する場合には、開始位置は前回の本サブルーチンの実行終了時に補助記憶装置24に記録した値である。
サーバCPU22は、時系列DB42からI番目のレコードを取得する(ステップS522)。サーバCPU22は、時系列DB42からI+1番目のレコードを取得する(ステップS523)。サーバCPU22は、I+1番目のレコードとI番目のレコードとの時間差が影響時間より大きいか否かを判定する(ステップS524)。時間差が影響時間以下であると判定した場合には(ステップS524でNO)、サーバCPU22はカウンタIに1を加算する(ステップS525)。その後、サーバCPU22はステップS523に戻る。
時間差が影響時間より大きいと判定した場合は(ステップS524でYES)、サーバCPU22はステップS521で使用した開始位置に対応するレコードからI番目のレコードまでを1つのグループに定める(ステップS526)。サーバCPU22は、補助記憶装置24に、開始位置がI+1である旨を記録する(ステップS527)。サーバCPU22は、その後処理を終了する。
図16は、完全隔離カウントのサブルーチンの処理の流れを示すフローチャートである。完全隔離カウントのサブルーチンは、完全隔離集合内のイベントの組み合わせを組み合わせ回数DB43に記録するサブルーチンである。
サーバCPU22は、カウンタJを初期値1に設定する(ステップS541)。サーバCPU22は、グループ内のJ番目の事象を第1事象に設定する(ステップS542)。サーバCPU22はカウンタKをJ+1に設定する(ステップS543)。サーバCPU22は、グループ内のK番目の事象を第2事象に設定する(ステップS544)。サーバCPU22は、組み合わせ回数DB43の対応するフィールド、すなわち第2事象のレコードの第1事象のフィールドに1を加算する(ステップS545)。サーバCPU22は、組み合わせ時刻DBに第1事象、第2事象および第2事象に関連付けられた時刻を記録したレコードを追加する(ステップS546)。
サーバCPU22は、第2事象が終了したか否かを判定する(ステップS547)。ここで、グループ内の最後の事象が第2事象である場合に、サーバCPU22は第2事象が終了したと判定する。第2事象が終了していないと判定した場合は(ステップS547でNO)、サーバCPU22はカウンタKに1を加算する(ステップS548)。その後、サーバCPU22はステップS544に戻る。
第2事象が終了したと判定した場合は(ステップS547でYES)、サーバCPU22は第1事象が終了したか否かを判定する(ステップS549)。ここで、グループ内の最後から二番目の事象が第1事象である場合に、サーバCPU22は第1事象が終了したと判定する。第1事象が終了していないと判定した場合は(ステップS549でNO)、サーバCPU22はカウンタJに1を加算する(ステップS550)。その後、サーバCPU22はステップS542に戻る。第1事象が終了したと判定した場合は(ステップS549でYES)、サーバCPU22は処理を終了する。
図17は、準隔離カウントのサブルーチンの処理の流れを示すフローチャートである。準隔離カウントのサブルーチンは、準隔離集合内のイベントの組み合わせを組み合わせ回数DB43に記録するサブルーチンである。
サーバCPU22は、カウンタJを初期値1に設定する(ステップS561)。サーバCPU22は、窓DBを作成するサブルーチンを起動する(ステップS562)。窓DBを作成するサブルーチンは、時系列DB42から時刻フィールドに記録された時間が影響時間の範囲内であるレコードを取り出して窓DBを作成するサブルーチンである。窓DBを作成するサブルーチンの処理の流れは後述する。
サーバCPU22は、カウンタKをJと同じ値に設定する(ステップS563)。サーバCPU22は、グループ内のJ番目の事象を第1事象に設定する(ステップS564)。サーバCPU22はカウンタKをK+1に設定する(ステップS565)。サーバCPU22は、第2事象が終了したか否かを判定する(ステップS566)。ここで、K番目の事象が、窓DB内に存在しない場合に、サーバCPU22は第2事象が終了したと判定する。
第2事象が終了していないと判定した場合は(ステップS566でNO)、サーバCPU22は、窓DB内のK番目の事象を第2事象に設定する(ステップS567)。サーバCPU22は、組み合わせ回数DB43の対応するフィールド、すなわち第2事象のレコードの第1事象のフィールドに1を加算する(ステップS568)。サーバCPU22は、組み合わせ時刻DBに第1事象、第2事象および第2事象に関連付けられた時刻を記録したレコードを追加する(ステップS569)。その後サーバCPU22は、ステップS565に戻る。
第2事象が終了したと判定した場合は(ステップS566でYES)、サーバCPU22は第1事象が終了したか否かを判定する(ステップS570)。ここで、グループ内の最後から二番目の事象が第1事象である場合に、サーバCPU22は第1事象が終了したと判定する。第1事象が終了していないと判定した場合は(ステップS570でNO)、サーバCPU22はカウンタJに1を加算する(ステップS571)。その後、サーバCPU22はステップS562に戻る。第1事象が終了したと判定した場合は(ステップS570でYES)、サーバCPU22は処理を終了する。
図18および図19は、窓DBを作成するサブルーチンの処理の流れを示すフローチャートである。窓DBを作成するサブルーチンは、時系列DB42から時刻フィールドに記録された時間が影響時間の範囲内であるレコードを取り出して窓DBを作成するサブルーチンである。
サーバCPU22は、サブルーチンの実行が初回であるか否かを判定する(ステップS601)。初回である場合には(ステップS601でYES)、サーバCPU22は窓DBのレコードを全て削除することにより、窓DBを初期化する(ステップS602)。サーバCPU22はカウンタMを1に設定する(ステップS603)。サーバCPU22は、時系列DB42のJ番目のレコードを窓DBに複写する(ステップS604)。ここでカウンタJは呼び出し元のサブルーチンで設定した窓DBの作成を開始するレコードの番号である。
サーバCPU22は、時系列DB42からJ+M番目のレコードの時刻フィールドに記録された時刻を取得する(ステップS605)。サーバCPU22は、J番目のレコードとJ+M番目のレコードとの間の時間が影響時間以下であるか否かを判定する(ステップS606)。影響時間以下であると判定した場合は(ステップS606でYES)、サーバCPU22は時系列DB42のJ+M番目のレコードを窓DBに複写する(ステップS607)。サーバCPU22は、カウンタMに1を加算する(ステップS608)。サーバCPU22はステップS605に戻る。影響時間を超えると判定した場合は(ステップS606でNO)、サーバCPU22は処理を終了する。
サブルーチンの実行が2回目以降である場合は(ステップS601でNO)、サーバCPU22は窓DBから1番目のレコードを削除する(ステップS611)。サーバCPU22は、2番目のレコードを1番目に、3番目のレコードを2番目にと、レコードを1つづつずらす(ステップS612)。ずらす操作は、補助記憶装置24または主記憶装置23内のデータを記憶するメモリのアドレスの変更により行なう。
サーバCPU22は、カウンタMを窓DB内のレコード数に設定する(ステップS613)。サーバCPU22は、カウンタMに1を加算する(ステップS614)。サーバCPU22は、時系列DB42からJ+M番目のレコードの時刻フィールドに記録された時刻を取得する(ステップS615)。サーバCPU22は、J番目のレコードとJ+M番目のレコードとの間の時間が影響時間以下であるか否かを判定する(ステップS616)。影響時間以下であると判定した場合は(ステップS616でYES)、サーバCPU22は時系列DB42のJ+M番目のレコードを窓DBに複写する(ステップS617)。サーバCPU22はステップS614に戻る。影響時間を超えると判定した場合は(ステップS616でNO)、サーバCPU22は処理を終了する。
図20から図22は、情報処理結果を表示する画面を示す説明図である。図20から図22は、入力部36から受け付けたユーザによる操作に応じて、組み合わせ確率DB45または組み合わせ時刻DBに記録された情報をクライアント30の表示部37に表示する画面の例である。なお、組み合わせ確率DB45または組み合わせ時刻DBからのデータの抽出およびグラフの生成の手順については、既存の様々な手法を使用できるので説明を省略する。
図20は、組み合わせ確率DB45から上位の項目を抽出して表示する画面の例である。画面には、リスト欄51、分析期間欄52、ID(IDentification)欄53およびデータ欄55が表示されている。リスト欄51には、事象DB41に記録されているレコードの内容が表示されている。なお、事象DB41に記録されているレコードを全て表示部37に表示しきれない場合には、後述するデータ欄55に表示されている情報に対応するレコードを抽出してリスト欄51に表示することが望ましい。
分析期間欄52は、時系列DB42から取り出して解析するデータの範囲の入力を受け付ける欄である。クライアントCPU32は、入力部36を介して分析期間欄52の入力を受け付け、通信部35、ネットワーク19および通信部25を介してサーバCPU22に伝達する。
ID欄53は、データを解析する被験者に固有のIDの入力を受け付ける欄である。補助記憶装置24に複数の被験者のデータが記録されている場合には、IDによりどの被験者のデータであるかを区別する。IDは、各DBのファイル名または各DBに設けられたIDを記録するフィールドに記録されている。クライアントCPU32は、入力部36を介してID欄53の入力を受け付け、通信部35、ネットワーク19および通信部25を介してサーバCPU22に伝達する。なお、本実施の形態の情報処理システム10で特定の被験者のデータのみを取り扱う場合には、ID欄53を省略することができる。
データ欄55は、組み合わせ確率DB45中の各フィールドの値が上位のデータの第1事象と第2事象との組み合わせを可視化したグラフである。データ欄55の横軸は第1事象が発生した際に第2事象が発生した確率を示す。データ欄55の縦軸は、第1事象と第2事象の組み合わせを示す。たとえば、A→Bという記載は、第1事象Aが発生した場合に、影響時間内に第2事象Bが発生した確率を意味している。図20の画面により、ユーザはどの事象の組み合わせの発生確率が高いかを容易に認識することができる。
図21は、図20のリスト欄51中のAの事象の選択を受け付けた場合の画面を示す。図21は、組み合わせ確率DB45から所定の事象に関連する上位の項目を抽出して表示する画面の例である。データ欄55は、組み合わせ確率DB45から第1事象または第2事象がAであるフィールドの値が降順で表示されている。データ欄55の横軸は第1事象が発生した際に第2事象が発生した確率を示す。データ欄55の縦軸は、第1事象と第2事象の組み合わせを示す。図21の画面により、ユーザは特定の事象と組み合わさって発生する確率が高い事象を容易に認識することができる。
図22は、リスト欄51中のAの事象およびGの事象の選択を順番に受け付けた場合の画面を示す。図22は、組み合わせ時刻DBに記録されたレコードから、所定の第1事象と第2事象の組み合わせのレコードを抽出して、発生時刻の時系列を可視化したグラフである。データ欄55には、第1事象がA、第2事象がGである組み合わせが発生した時刻が表示されている。データ欄55の横軸は、時刻を示す。データ欄55の縦軸は、指定された順番の事象の発生の有無を示す。図22の画面により、ユーザは特定の事象の組み合わせがいつ発生しているかを容易に認識することができる。
図23は、比較例のプログラムの処理の流れを示すフローチャートである。図24および図25は、計算時間短縮の効果を示す説明図である。図23から図25を使用して、本実施の形態による計算時間短縮の効果について説明する。
図23は、時系列DB42に記録されたレコードを完全隔離集合および不完全隔離集合に分けずに最初のレコードから順次処理する、比較例の処理の流れを示すフローチャートである。図23を使用して、比較例の処理の流れを説明する。
サーバCPU22は、組み合わせ回数DB43および組み合わせ時刻DBを初期化する(ステップS641)。すなわち組み合わせ回数DB43の各フィールドの値を初期値である0に設定する。また、組み合わせ時刻DBのレコードを全て削除する。サーバCPU22は、時系列DB42内の解析を開始する位置および終了する位置を取得する(ステップS642)。ここで、解析を開始する位置および終了する位置は、被験者の状態を解析する医師等のユーザによる入力を通信部25、ネットワーク19、通信部35を介して入力部36から取得する。
サーバCPU22は準隔離カウントのサブルーチンを起動する(ステップS643)。準隔離カウントのサブルーチンは、準隔離集合内のイベントの組み合わせを組み合わせ回数DB43に記録するサブルーチンである。準隔離カウントのサブルーチンは、図17を使用して説明したサブルーチンと同一のサブルーチンを使用する。ここで、準隔離カウントのサブルーチンは、ステップS642で取得した開始位置から終了位置までの時系列DB42のレコードを全て処理する。
サーバCPU22はステップS642で取得した開始時刻から終了時刻までの間の各事象の数を数えて発生数DB44を作成する(ステップS644)。サーバCPU22は、組み合わせ回数DB43と発生数DB44から第1事象が発生した場合に第2事象が発生する確率を算出して、組み合わせ確率DB45に記録する(ステップS645)。サーバCPU22は、以上の処理で作成した組み合わせ確率DB等を通信部25、ネットワーク19および通信部35を介してクライアント30の表示部37に表示する(ステップS646)。表示の例は、たとえば図20から図22に示す画面である。
図24は、図14に示す本実施の形態のフローチャートを使用した場合と、図23に示す比較例のフローチャートを使用した場合との計算時間の差を示すグラフである。図24の横軸は、時系列DB42に含まれるレコードの数、すなわち処理する事象の数であり、単位は個である。図24の縦軸は、図23または図14のフローチャートを実行する場合にサーバCPU22が要する計算時間であり、単位は秒である。事象DB41に記録された事象の数は20個、事象の発生状態は、図10に示すようにすべての事象を完全隔離集合に分けることができる場合を例にして計算している。
実線は、図14に示す本実施の形態の処理を行った場合の処理時間、破線は図23に示す比較例の処理を行った場合の処理時間を示す。本実施の形態の処理時間は、比較例の処理時間に比べて半分以下になっている。
図25は、図14に示す本実施の形態のフローチャートを使用した場合と、図23に示す比較例のフローチャートを使用した場合との計算時間の差を示すグラフである。図25の横軸は、事象DB41に含まれるレコードの数、すなわち処理する事象の種類の数であり、単位は個である。図25の縦軸は、図23または図14のフローチャートを実行する場合にサーバCPU22が要する計算時間であり、単位は秒である。時系列DB42に記録された事象の数は10万個、事象の発生状態は、図10に示すようにすべての事象を完全隔離集合に分けることができる場合を例にして計算している。
実線は、図14に示す本実施の形態の処理を行った場合の処理時間、破線は図23に示す比較例の処理を行った場合の処理時間を示す。本実施の形態では、事象の種類が60個程度の場合には、本実施の形態の処理時間は比較例の処理時間の半分程度、事象の種類が200個程度の場合には、本実施の形態の処理時間は比較例の処理時間の6割程度になっている。
図24および図25より、本実施の形態では時系列DB42に記録された事象を影響時間以上離れたグループに分割してから処理することにより、計算時間を大幅に短縮できることがわかる。
計算時間を短縮できる理由について説明する。比較例では、時系列DB42中の処理範囲のレコード全体を一つの準隔離集合として取扱い、窓DBを使用して影響時間内の事象の組み合わせを抽出している。窓DBを更新する際には、図19のステップS612に示すように、窓DB内のレコードを1つずつずらす操作を行う。これは、主記憶装置23または補助記憶装置24に記憶されたデータの記録位置を変更していく操作であるので、時間を要する。
一方、本実施の形態では時系列DB42中の処理範囲のレコードを完全隔離集合および不完全隔離集合に分割する。完全隔離集合の場合は、窓DBを使用する処理が発生しないため、計算時間が短くなる。また、不完全隔離集合の場合も、集合間をまたぐ処理が不要な分、窓DBをずらす操作が少なくなるので、計算時間が短くなる。
本実施の形態によると、多数の事象の発生時刻を記録した時系列データから、関連する事象の組み合わせを効率良く抽出するプログラム等を提供することができる。
図22に示す事象の組み合わせの発生時刻の表示を行わない場合には、組み合わせ時刻DBの作成を省略することができる。
組み合わせ回数DB43および組み合わせ確率DB45に第3事象以降のフィールドを設けることにより、3つ以上の事象の組み合わせの発生確率を抽出することができる。
解析対象は、一人の被験者の行動に限定しない。たとえば店舗内での複数の消費者の行動を時系列DB42に記録して、本実施の形態の手法により行動の組み合わせを解析することができる。また、解析対象は実世界における被験者の行動に限定しない。たとえばウェブブラウジング、インターネットショッピング等のネットワーク上における被験者の行動を時系列DB42に記録して、本実施の形態の手法を使用して行動の組み合わせを解析することができる。
組み合わせ確率DB45をクライアント30の補助記憶装置34に複写して、たとえばクライアント30にインストールされた表計算ソフトウェア等の汎用のソフトウェアを使用してグラフ等による可視化を行うようにしても良い。この場合、図14を用いて説明したプログラムの処理中のステップS510のデータの表示を省略することができる。
ステップS509において、サーバCPU22は、第2事象が発生した場合に第1事象が発生していた確率を算出して、組み合わせ確率DB45に記録しても良い。また、第1事象を基準として算出した場合と、第2事象を基準として算出した場合の二つの組み合わせ確率DB45を作成しても良い。この場合には、どちらの組み合わせ確率DB45を使用したデータを表示するかについて、ユーザからの入力を受け付けることが望ましい。
[実施の形態2]
本実施の形態は、時系列DB42に事象を記録する際にグループ分けを行う情報処理装置等に関する。実施の形態1と共通する部分については、説明を省略する。
図26は、実施の形態2の時系列DB42のレコードレイアウトを示す説明図である。本実施の形態の時系列DB42は、発生した事象を示す記号と、その事象に関連する時刻とグループの番号とを関連づけるDBである。時系列DB42は、時刻フィールド、事象フィールド、時間差フィールドおよびグループフィールドを備える。時刻フィールドには、日時を示す数値が記録されている。
事象フィールドには、時刻フィールドに記録された時刻に発生した被験者の状態の変化を示す記号が記録されている。時間差フィールドには、次のイベントとの間の時間差が記録されている。グループフィールドには、レコードの属するグループの番号が記録されている。時系列DB42は、事象に対応する1つの時刻について1つのレコードを有する。時系列DB42のレコードは、時刻フィールドの昇順に配列されている。
図27は、実施の形態2のプログラムの処理の流れを示すフローチャートである。図27は、サーバCPU22が時系列DB42にデータを記録する際に実行するプログラムの処理の流れを示す。
サーバCPU22は、カウンタIおよびカウンタJを初期値1にする(ステップS701)。ここで、カウンタIは事象および時刻の取得順序を記録するカウンタである。また、カウンタJはグループの番号を記録するカウンタである。
サーバCPU22は、ネットワーク19を介してセンサ制御装置12、生体センサ16等から事象と時刻とを取得する(ステップS702)。サーバCPU22はカウンタIに1を加算する(ステップS703)。サーバCPU22は、ネットワーク19を介してセンサ制御装置12、生体センサ16等から次の事象と時刻とを取得する(ステップS704)。サーバCPU22は、ステップS702で取得した時刻とステップS704で取得した時刻との時間差を算出する(ステップS705)。
サーバCPU22は、I−1番目に取得した時刻、I−1番目に取得した事象、ステップS705で算出した時間差およびカウンタJを記載したレコードを時系列DB42に作成して記録する(ステップS706)。サーバCPU22は、ステップS705で算出した時間差が影響時間より大きいか否かを判定する(ステップS707)。時間差が影響時間より大きいと判定した場合は(ステップS707でYES)、サーバCPU22はカウンタJに1を加算する(ステップS708)。時間差が影響時間以下であると判定した場合(ステップS707でNO)およびステップS708の終了後、サーバCPU22は処理が終了したか否かを判定する(ステップS709)。ここで、サーバCPU22が処理が終了したと判定するのは、ネットワーク19を介して事象の入力が終了した旨の指示を取得した場合である。
処理が終了していないと判定した場合(ステップS709でNO)、サーバCPU22はステップS703に戻る。処理が終了したと判定した場合(ステップS709でYES)、サーバCPU22はI番目に取得した時刻、I番目に取得した事象、ステップS705で算出した時間差およびカウンタJを記載したレコードを時系列DB42に作成して記録する(ステップS710)。サーバCPU22は、その後処理を終了する。
図28は、実施の形態2のプログラムの処理の流れを示すフローチャートである。図28に示すプログラムは、図26に示す時系列DB42からレコードを取得して、影響時間内に2つの事象の組み合わせが発生する確率を算出するプログラムである。図28を使用して、本実施の形態の処理の流れを説明する。
サーバCPU22は、組み合わせ回数DB43および組み合わせ時刻DBを初期化する(ステップS721)。すなわちサーバCPU22は組み合わせ回数DB43の各フィールドの値を初期値である0に設定する。さらに、サーバCPU22は、組み合わせ時刻DBのレコードを全て削除する。
サーバCPU22は、時系列DB42内の解析を開始する位置および終了する位置を取得する(ステップS722)。ここで、サーバCPU22は解析を開始する位置および終了する位置を、被験者の状態を解析する医師等のユーザによる入力を通信部25、ネットワーク19、通信部35を介して入力部36から取得する。サーバCPU22は、時系列DB42のグループフィールドを参照して1グループ分のデータを取得する(ステップS723)。ここで、1グループ分とは、グループフィールドが同一の値が記録されているレコードを意味する。
サーバCPU22は、取得したグループの最初のイベントと最後のイベントとの間の時間が影響時間以下であるか否かを判定する(ステップS724)。影響時間以下である場合は(ステップS724でYES)、サーバCPU22は完全隔離カウントのサブルーチンを起動する(ステップS725)。完全隔離カウントのサブルーチンは、完全隔離集合内のイベントの組み合わせを組み合わせ回数DB43に記録するサブルーチンである。本実施の形態においては、完全隔離カウントのサブルーチンは図16を使用して説明したサブルーチンを使用する。
影響時間より長い場合は(ステップS724でNO)、サーバCPU22は準隔離カウントのサブルーチンを起動する(ステップS726)。準隔離カウントのサブルーチンは、準隔離集合内のイベントの組み合わせを組み合わせ回数DB43に記録するサブルーチンである。本実施の形態においては、準完全隔離カウントのサブルーチンは図17を使用して説明したサブルーチンを使用する。
ステップS725またはステップS726の終了後、サーバCPU22は時系列DB42の解析を終了したか否かを判定する(ステップS727)。サーバCPU22は、解析を終了する位置を、前述のとおりステップS722で取得する。終了していないと判定した場合は(ステップS727でNO)、サーバCPU22はステップS723に戻る。終了したと判定した場合は(ステップS727でYES)、サーバCPU22はステップS722で取得した開始時刻から終了時刻までの間の各事象の数を数えて発生数DB44を作成する(ステップS728)。サーバCPU22は、組み合わせ回数DB43と発生数DB44から第1事象が発生した場合に第2事象が発生する確率を算出して、組み合わせ確率DB45に記録する(ステップS729)。サーバCPU22は、以上の処理で作成した組み合わせ確率DB45等を通信部25、ネットワーク19および通信部35を介してクライアント30の表示部37に表示する(ステップS730)。表示の例は前述の図20から図22である。その後、サーバCPU22は処理を終了する。
本実施の形態によると、時系列DB42に情報を記録する際に、影響時間以上離れた事象のグループに分けるので、その後医師等がデータを解析する際のサーバCPU22の動作を高速にする事ができる。
[実施の形態3]
本実施の形態は、一部の事象を無視することにより準隔離集合を完全隔離集合に分けて処理する情報処理装置等に関する。実施の形態1と共通する部分については、説明を省略する。
図29および図30は、実施の形態3の事象の発生状態の例を示す説明図である。図29および図30の横軸は時間である。図29および図30の縦軸は発生した事象の記号を示す。黒丸は、横軸で示す時刻に、縦軸で示す事象が発生したことを示す。図29および図30を使用して、本実施の形態の概要を説明する。
図29は、一つの準隔離集合の事象の発生状態を示す。図29に示す事象は、隣接する事象との間は影響時間である20秒以下である。また、図29の左端の事象とその前の事象との間は、影響時間よりも離れている。同様に、図29の右端の事象とその後の事象との間も、影響時間よりも離れている。
1個の事象を無視した場合に、その事象の前の事象とその事象の後の事象との間の間隔が影響時間よりも長くなるように準隔離集合を分けた状態を、図29の破線の矩形枠で示す。5番目のUの事象および15番目のXの事象を無視した場合に、準隔離集合を影響時間よりも離れた3個のグループに分けることができる。3個のグループのうち、右端および左端のグループは、影響時間よりも短いグループになっている。一方、中央のグループは、影響時間よりも長いグループになっている。以後の説明では、無視する事象を境界事象と呼ぶ。
図30は、図29に破線で示した中央のグループをさらに二つに分けた状態を示す。図30は、連続する2個の事象を境界事象にした場合に、影響時間よりも間隔が空くようにグループを分けている。分けたグループを、図30の破線の長円枠で示す。
以上のようにして、図29および図30に示す準隔離集合を、4個の完全隔離集合と4個の境界事象とに分割することができる。仮に、連続する2個の事象を境界事象にした場合でも影響時間よりも長いグループができた場合には、その部分のみ連続する3個の事象を境界事象にして境界事象の数を増やしていくことにより、最終的には準隔離集合に含まれる全ての事象を完全隔離集合と境界事象に分けることができる。この分割の操作に使用するDBについて、以下に説明する。
図31は、実施の形態3のグループDBのレコードレイアウトを示す説明図である。グループDBは、準隔離集合を完全隔離集合と境界事象とに分割する際に使用するDBである。グループDBは、時刻フィールド、事象フィールド、第2時間差フィールドおよびフラグフィールドを有する。
時刻フィールドには、日時を示す数値が記録されている。事象フィールドには、時刻フィールドに記録された時刻に発生した被験者の状態の変化を示す記号が記録されている。第2時間差フィールドには、2つ後の事象との間の時間差が記録されている。フラグフィールドには、境界事象であることを示すフラグが記録されている。グループDBは、事象に対応する1つの時刻について1つのレコードを有する。グループDBは、サーバCPU22が必要に応じて補助記憶装置24または主記憶装置23に一時的に作成するDBである。
サーバCPU22は、時系列DB42中の本実施の形態の処理を行う準隔離集合に対応する部分を時刻フィールドおよび事象フィールドに複写する。なお、時系列DB42と同様にグループDBも時刻フィールドのデータの昇順で記録されている。
サーバCPU22は、第2時間差フィールドに、時刻フィールドに記録された値と二レコード後のレコードの時刻フィールドに記録された値との差を記録する。たとえば、図31の一番上に示すレコードの場合、時刻フィールドには712が記録されている。二レコード後、すなわち三番目に示すレコードの時刻フィールドには、720が記録されている。したがって、サーバCPU22は、一番上に示すレコードの第2時間差フィールドには720と712との差分である8を記録する。グループDBの最後の2つのレコードは、グループDB内に二レコード後のレコードが存在しないため、空欄である。
図31のグループDBの第2時間差フィールドには、影響時間である20秒を超える値が楕円で示す2か所に記録されている。サーバCPU22は、第2時間差フィールドに影響時間を超える値が記録されているレコードの次のレコードのフラグフィールドに、境界事象を示す「境界」と記録する。
図32は、実施の形態3のグループDBのレコードレイアウトを示す説明図である。図32に示すグループDBは、図31に示すグループDBに第3時間差フィールドが追加されたDBである。
図32の例では、サーバCPU22は、各境界事象で区切られたグループの最初のレコードの時刻フィールドと最後のレコードの時刻フィールドに記録された値の差が影響時間を超える部分、すなわち中央のグループに含まれるレコードのみを処理の対象とする。サーバCPU22は、処理の対象のレコードの第3時間差フィールドに、三レコード後のレコードとの時刻フィールドに記録された値の差を記録する。たとえば、図32中の時刻フィールドが746のレコードの場合、三レコード後の時刻フィールドには、755が記録されている。したがって、サーバCPU22は、時刻フィールドが746であるレコードの第3時間差フィールドには755と746との差分である9を記録する。処理の対象中の最後の3つのレコードは、処理の対象内に三レコード後のレコードが存在しないため、空欄である。
図32のグループDBの第3時間差フィールドには、影響時間である20秒を超える値が楕円で示す1か所に記録されている。サーバCPU22は、第3時間差フィールドに影響時間を超える値が記録されているレコードの次のレコードから連続する2つのレコードのフラグフィールドに、境界事象を示す「境界」と記録する。
なお、グループDBには、最初から第3時間差フィールド以降の時間差フィールドを設けても良い。このようにすることにより、処理の途中でDBにフィールドを追加する必要がなくなる。
図33および図34は、実施の形態3のプログラムの処理の流れを示すフローチャートである。図33および図34を使用して本実施の形態のプログラムの処理の流れを説明する。ステップS501からステップS505までおよびステップS507からステップS510までについては、図14を使用して説明した実施の形態1のフローチャートと同一であるので、説明を省略する。
取得したグループの最初のイベントと最後のイベントとの間の時間が影響時間を超える場合は(ステップS504でNO)、サーバCPU22はグループ分割のサブルーチンを起動する(ステップS741)。グループ分割のサブルーチンは、図29から図31までを使用して説明したように、ステップS503で取得したグループを、境界事象を定めて分割するサブルーチンである。グループ分割のサブルーチンの処理の流れは後述する。
サーバCPU22は、完全隔離カウントのサブルーチンを起動する(ステップS742)。完全隔離カウントのサブルーチンは、完全隔離集合内のイベントの組み合わせを組み合わせ回数DB43に記録するサブルーチンである。本実施の形態においては、完全隔離カウントのサブルーチンは図16を使用して説明したサブルーチンを使用する。
サーバCPU22は、ステップS503で取得したグループの末尾まで処理したか否かを判定する(ステップS743)。グループの末尾まで処理していないと判定した場合は(ステップS743でNO)、サーバCPU22はステップS742に戻る。グループの末尾まで処理したと判定した場合は(ステップS743でYES)、サーバCPU22はカウンタMを初期値1に設定する(ステップS744)。
サーバCPU22は、境界フラグの前後をカウントするサブルーチンを起動する(ステップS745)。境界フラグの前後をカウントするサブルーチンは、M番目の境界事象とその前後の影響時間の範囲内の事象との組み合わせを組み合わせ回数DB43に記録するサブルーチンである。境界フラグの前後をカウントするサブルーチンの処理の流れは後述する。
サーバCPU22は、ステップS503で取得したグループの末尾の境界事象まで処理したか否かを判定する(ステップS746)。処理していないと判定した場合は(ステップS746でNO)、サーバCPU22はカウンタMに1を加算する(ステップS747)。サーバCPU22はステップS745に戻る。処理したと判定した場合は(ステップS746でYES)、サーバCPU22はステップS507に進む。
図35は、実施の形態3のグループ分割のサブルーチンの処理の流れを示すフローチャートである。グループ分割のサブルーチンは、境界事象を定めてグループを分割するサブルーチンである。図35を使用してグループ分割のサブルーチンの処理の流れを説明する。
サーバCPU22は、開始位置を1に、カウンタJを1に設定する(ステップS761)。開始位置は、一連の処理の適用を開始する最初のレコードである。Jは、連続して挿入する境界フラグの数を示すカウンタである。サーバCPU22は、ステップS503で取得したグループに対応するレコードを有するグループDBを作成する(ステップS762)。ここで作成するグループDBのレコードレイアウトは、図31を使用して説明したものである。サーバCPU22は、境界フラグ挿入のサブルーチンを起動する(ステップS763)。境界フラグ挿入のサブルーチンは、グループDBの境界フィールドに境界事象を示すフラグを挿入するサブルーチンである。境界フラグ挿入のサブルーチンの処理の流れは後述する。ステップS763で起動する境界フラグ挿入のサブルーチンは、ステップS503で取得したグループに含まれる全てのレコードを処理の対象とする。
サーバCPU22は、カウンタJに1を加算する(ステップS791)。サーバCPU22は、再分割フラグを初期値FALSEに設定する(ステップS764)。サーバCPU22は、グループDBの境界フィールドを検索して、開始位置から数えて最初の境界フラグが記録されたレコードを抽出する(ステップS765)。サーバCPU22は、ステップS765で抽出したレコードの1つ前のレコードの時刻フィールドに記録された値と、開始位置に対応するレコードの時刻フィールドに記録された値との差から時間差を算出する(ステップS766)。
サーバCPU22は、時間差が影響時間以下であるか否かを判定する(ステップS767)。影響時間を超えると判定した場合は(ステップS767でNO)、サーバCPU22は再分割フラグをTRUEに設定する(ステップS768)。サーバCPU22は、グループDBにJ+1時間差フィールドを追加する(ステップS769)。たとえば、Jが2である場合には、サーバCPU22はステップS769で第3時間差フィールドを追加する。サーバCPU22は、追加したJ+1時間差フィールドに、時刻フィールドに記録された値とJ+1個後ろのレコードの時刻フィールドに記録された値との差分を記録する。
サーバCPU22は、境界フラグ挿入のサブルーチンを起動する(ステップS770)。境界フラグ挿入のサブルーチンは、ステップS763で起動したサブルーチンと同一のサブルーチンである。ステップS770で起動する境界フラグ挿入のサブルーチンは、境界フラグに対応するレコードからステップS765で抽出したレコードの1つ前のレコードまでを処理の対象とする。
ステップS770の終了後または影響時間以下であると判定した場合(ステップS767でYES)、サーバCPU22は開始位置をステップS765で境界フラグを抽出したレコードの次のレコードを示す番号に設定する(ステップS771)。
サーバCPU22は、グループの処理が終了したか否かを判定する(ステップS772)。処理が終了していないと判定した場合は(ステップS772でNO)、サーバCPU22はステップS765に戻る。処理が終了したと判定した場合は(ステップS772でYES)、サーバCPU22は再分割フラグがFALSEであるか否かを判定する(ステップS773)。再分割フラグがFALSEではない、すなわちTRUEである場合は(ステップS773でNO)、サーバCPU22はステップS791に戻る。再分割フラグがFALSEであると判定した場合は(ステップS773でYES)、サーバCPU22は処理を終了する。
図36は、実施の形態3の境界フラグ挿入のサブルーチンの処理の流れを示すフローチャートである。境界フラグ挿入のサブルーチンは、グループDBの境界フィールドに境界事象を示すフラグを挿入するサブルーチンである。図36を使用して境界フラグ挿入のサブルーチンの処理の流れを説明する。
サーバCPU22は、カウンタIを初期値1に設定する(ステップS781)。サーバCPU22は、グループDB中の本サブルーチンの処理の対象とするレコードから、I番目のレコードを取得する(ステップS782)。サーバCPU22は、取得したレコードの一番大きい時間差フィールドの値が影響時間以下か否かを判定する(ステップS783)。すなわち、第2時間差フィールドまで存在する場合には第2時間差フィールドの値が影響時間以下であるか否かを判定する。また第3時間差フィールドまで存在する場合には、第3時間差フィールドの値が影響時間以下であるか否かを判定する。
影響時間以下であると判定した場合は(ステップS783でYES)、サーバCPU22はカウンタIに1を加算する(ステップS784)。影響時間を超えると判定した場合は(ステップS783でNO)、サーバCPU22はI+1番目のレコードからJ個のレコードのフラグフィールドに境界フラグを記録する(ステップS785)。ここでJは本サブルーチンの呼び出し元のプログラムから引数として取得した、連続して挿入する境界フラグの数を示すカウンタである。サーバCPU22は、カウンタIにJ+1を加算する(ステップS786)。
ステップS784またはステップS786の終了後、サーバCPU22はレコードの処理が終了したか否かを判定する(ステップS787)。終了していないと判定した場合は(ステップS787でNO)、サーバCPU22はステップS782に戻る。終了したと判定した場合は(ステップS787でYES)、サーバCPU22は処理を終了する。
図37は、実施の形態3の境界フラグの前後をカウントするサブルーチンの処理の流れを示すフローチャートである。境界フラグの前後をカウントするサブルーチンは、M番目の境界事象とその前後の影響時間の範囲内の事象との組み合わせを組み合わせ回数DB43に記録するサブルーチンである。図37を使用して、境界フラグの前後をカウントするサブルーチンの処理の流れを説明する。
サーバCPU22は、グループDBからM番目の境界フラグを含むレコードを抽出する(ステップS801)。ここでMは本サブルーチンの呼び出し元のプログラムから引数として取得した、処理対象の境界フラグを示すカウンタである。
サーバCPU22は、抽出したレコードの事象フィールドに記録されている事象を第2事象に設定する(ステップS802)。第2事象は、本サブルーチン内で使用する変数の名称である。サーバCPU22は、境界フラグを含むレコードから影響時間の範囲内の前、すなわち過去のレコードを抽出する(ステップS803)。サーバCPU22は、カウンタJを初期値1に設定する(ステップS804)。
サーバCPU22は、ステップS803で抽出したレコードのうちJ番目のレコードの事象フィールドに記録されている事象を第1事象に設定する(ステップS805)。第1事象は、本サブルーチン内で使用する変数の名称である。
サーバCPU22は、組み合わせ回DB43の第1事象および第2事象に対応するフィールドに1を加算する(ステップS806)。具体的には、たとえば第1事象がB、第2事象がCである場合には、第2事象がCのレコードのBフィールドに1を加算する。サーバCPU22は、組み合わせ時刻DBに第1事象、第2事象および第2事象に関連付けられた時刻を記録したレコードを追加する(ステップS807)。
サーバCPU22は、ステップS803で抽出した第1事象のレコードの処理が終了したか否かを判定する(ステップS808)。処理が終了していないと判定した場合は(ステップS808でNO)、サーバCPU22はカウンタJに1を加算する(ステップS809)。その後サーバCPU22はステップS805に戻る。
処理が終了したと判定した場合は(ステップS808でYES)、サーバCPU22は、ステップS801で抽出したレコードの事象フィールドに記録されている事象を第1事象に設定する(ステップS812)。サーバCPU22は、境界フラグを含むレコードから影響時間の範囲内の後、すなわち未来のレコードを抽出する(ステップS813)。サーバCPU22は、カウンタJを初期値1に設定する(ステップS814)。
サーバCPU22は、ステップS813で抽出したレコードのうちJ番目のレコードの事象フィールドに記録されている事象を第2事象に設定する(ステップS815)。第1事象は、本サブルーチン内で使用する変数の名称である。
サーバCPU22は、組み合わせ回DB43の第1事象および第2事象に対応するフィールドに1を加算する(ステップS816)。サーバCPU22は、組み合わせ時刻DBに第1事象、第2事象および第2事象に関連付けられた時刻を記録したレコードを追加する(ステップS817)。
サーバCPU22は、ステップS813で抽出した第2事象のレコードの処理が終了したか否かを判定する(ステップS818)。処理が終了していないと判定した場合は(ステップS818でNO)、サーバCPU22はカウンタJに1を加算する(ステップS819)。処理が終了したと判定した場合は(ステップS818でYES)、サーバCPU22は処理を終了する。
本実施の形態によると、準隔離集合中の事象同士の時間間隔の平均値が影響時間を若干下回る程度である場合に、計算時間が短い情報処理システム10を提供することができる。
図35を使用して説明したグループ分割のサブルーチン中のカウンタJの上限値をあらかじめ定めておいても良い。この場合、Jが上限値に達した場合には、影響時間よりも長いグループが残っていてもグループを分割する処理を停止する。影響時間よりも長いグループ内部の組み合わせは、図17を使用して説明した準隔離カウントのサブルーチンで処理する。Jを適切に設定することにより、計算時間が短い情報処理システム10を提供することができる。
[実施の形態4]
本実施の形態は、事象間の間隔を上位から加算することにより、連続する境界事象の最小数を定める情報処理装置等に関する。実施の形態3と共通する部分については、説明を省略する。
図38は、実施の形態4の事象の発生状態の例を示す説明図である。図38の横軸は時間である。図38の縦軸は発生した事象の記号を示す。黒丸は、横軸で示す時刻に、縦軸で示す事象が発生したことを示す。図38を使用して、本実施の形態の概要を説明する。
図38は、一つの準隔離集合の事象の発生状態を示す。図38に示す事象は、隣接する事象との間は影響時間である20秒以下である。また、図38の左端の事象とその前の事象との間は、影響時間よりも離れている。同様に、図38の右端の事象とその後の事象との間も、影響時間よりも離れている。
図38の場合、各事象の間の間隔のムラが少ないため、1個または連続する2個の事象を境界事象にしても、事象を影響時間より離れたグループに分けることができない。図38に破線で示すように、連続する3個の事象を境界事象にすることにより、事象を影響時間より間隔が離れた3個のグループに分けることができる。この場合には、事象間の間隔を上位から加算して境界事象の最低限必要な連続数を定めることにより、計算時間を短くすることができる。ここまで説明した操作に使用するDBについて、以下に説明する。
図39および図40は、実施の形態4の時間差加算DBのレコードレイアウトを示す説明図である。時間差加算DBは、準隔離集合を完全隔離集合と境界事象とに分割する際に使用するDBである。本実施の形態の時間差加算DBは、時刻フィールド、事象フィールド、時間差フィールド、加算数フィールドおよび和フィールドを有する。時間差加算DBは、境界フラグ挿入のサブルーチンを連続何個の境界フラグの挿入から開始するかを定める際に使用するDBである。
時刻フィールドには、日時を示す数値が記録されている。事象フィールドには、時刻フィールドに記録された時刻に発生した被験者の状態の変化を示す記号が記録されている。時間差フィールドには、次の事象との間の時間差が記録されている。加算数フィールドおよび和フィールドについては、後述する。時間差加算DBは、事象に対応する1つの時刻について1つのレコードを有する。時間差加算DBは、サーバCPU22が必要に応じて補助記憶装置24または主記憶装置23に一時的に作成するDBである。
サーバCPU22は、時系列DB42中の本実施の形態の処理を行う準隔離集合に対応する部分を時刻フィールドおよび事象フィールドに複写する。図39に示す時間差加算DBは時刻フィールドのデータの昇順で記録されている。
サーバCPU22は、時間差フィールドに、時刻フィールドに記録された値と次のレコードの時刻フィールドに記録された値との差を記録する。たとえば、図39の一番上に示すレコードの場合、時刻フィールドには712が記録されている。次のレコードの時刻フィールドには、717が記録されている。したがって、サーバCPU22は、一番上に示すレコードの時間差フィールドには717と712との差分である5を記録する。グループDBの最後の1つのレコードは、グループDB内に次のレコードが存在しないため、空欄である。
サーバCPU22は、時間差フィールドに記録された値をキーとしてレコードを降順に並べ替える。並べ替えた後のグループDBの例を図40に示す。サーバCPU22は、一番上のレコード、すなわち時間差フィールドに記録された値が最大であるレコードの加算数フィールドに1を記録する。サーバCPU22は、同じレコードの和フィールドに時間差フィールドに記録された値を上位から加算数フィールドに記録された数加算した値を和フィールドに記録する。
サーバCPU22は、加算数フィールドに記録する数値を1づつ加算して、和フィールドを順次求める。たとえば、時刻フィールドの値が733のレコードの場合、加算数フィールドの値は4であり、和フィールドの値は時間差フィールドの上位4レコード分を加算した26である。このレコードで和フィールドに記録された値が影響時間を超えるので、サーバCPU22は加算数フィールドおよび和フィールドの処理を停止する。
以上により、本実施の形態の場合には影響時間を超えるためには事象間の時間差を4以上加算する必要があることがわかる。これは、境界事象が3個以上であることを意味している。したがって、図36を使用して説明した境界フラグ挿入のサブルーチンを連続3個の境界フラグの挿入から開始することにより、計算時間を短縮することができる。
図41は、実施の形態4のグループ分割のサブルーチンの処理の流れを示すフローチャートである。本サブルーチンは、図35を使用して説明したグループ分割のサブルーチンの代わりに使用するサブルーチンである。図41を使用して、本実施の形態のグループ分割のサブルーチンの処理の流れを説明する。
サーバCPU22は、境界数算出のサブルーチンを起動する(ステップS821)。境界数算出のサブルーチンは、境界フラグ挿入のサブルーチンを連続何個の境界フラグの挿入から開始するかを定めるサブルーチンである。境界数算出の処理の流れは後述する。
サーバCPU22は、開始位置を1に、カウンタJを境界数算出のサブルーチンで算出した境界フラグ数に設定する(ステップS822)。開始位置は、一連の処理の適用を開始する最初のレコードである。Jは、連続して挿入する境界フラグの数を示すカウンタである。サーバCPU22は、グループDBを作成する(ステップS762)。ステップS762およびそれ以降の処理は、図35を使用して説明した実施の形態3のグループ分割のサブルーチンと同一であるので、説明を省略する。
図42は、実施の形態4の境界数算出のサブルーチンの処理の流れを示すフローチャートである。境界数算出のサブルーチンは、境界フラグ挿入のサブルーチンを連続何個の境界フラグの挿入から開始するかを定めるサブルーチンである。図42を使用して、境界数算出のサブルーチンの処理の流れを説明する。
サーバCPU22は、ステップS503で取得したグループに対応するレコードを有する時間差加算DBを作成する(ステップS841)。時間差加算DBは図39および図40を使用して説明したDBである。ここで、サーバCPU22は、時系列DB42中の本実施の形態の処理を行う準隔離集合に対応する部分を時刻フィールドおよび事象フィールドに複写する。また、サーバCPU22は、時間差加算DBの時間差フィールドに、時刻フィールドに記録された値と、次のレコードの時刻フィールドに記録された値との差を記録する。
サーバCPU22は、時間差加算DBのレコードを時間差フィールドをキーとして降順に並べ替える(ステップS842)。サーバCPU22は、カウンタJを初期値1に設定する(ステップS843)。
サーバCPU22は、上位J個の時間差フィールドを加算して、合計値を算出する(ステップS844)。サーバCPU22は、算出した合計値が影響時間より大きいか否かを判定する(ステップS845)。影響時間以下であると判定した場合(ステップS845でNO)、サーバCPU22はカウンタJに1を加算する(ステップS846)。サーバCPU22は、ステップS844に戻る。影響時間より大きいと判定した場合(ステップS845でYES)、サーバCPU22は境界フラグ数をJ−1に設定する(ステップS847)。境界フラグ数は、本サブルーチンが呼び出し元に引き渡す引数である。サーバCPU22は、その後処理を終了する。
[実施の形態5]
本実施の形態は、前後の事象の間の時間差が大きくなる事象を境界事象に選択し、その境界事象の前後の事象の時間差が影響時間を下回る場合には、隣接する事象も境界事象に選択することにより、準隔離集合を完全隔離集合に分けて処理する情報処理装置等に関する。実施の形態3と共通する部分については、説明を省略する。
図43から図45は、実施の形態5の事象の発生状態の例を示す説明図である。図43から図45の横軸は時間である。図43から図45の縦軸は発生した事象の記号を示す。黒丸は、横軸で示す時刻に、縦軸で示す事象が発生したことを示す。図43から図45を使用して、本実施の形態の概要を説明する。
図43から図45は、一つの準隔離集合の事象の発生状態を示す。図43から図45に示す事象は、隣接する事象との間は影響時間である20秒以下である。また、図43から図45の左端の事象とその前の事象との間は、影響時間よりも離れている。同様に、図43から図45の右端の事象とその後の事象との間も、影響時間よりも離れている。
図43では、右側の事象との間隔が最も大きい事象が、境界事象に選択されている。この境界事象により、準隔離集合は破線の矩形で示す2個のグループに分離されている。2個のグループの間隔は、影響時間よりも長くなっている。右側のグループは影響時間よりも短いグループに、左側のグループは影響時間よりも長いグループになっている。
図44では、図43の右側のグループについて右側の事象との間隔が最も大きい事象およびそれに隣接する事象が、境界事象に選択されている。この境界事象により、右側のグループは破線の角丸矩形で示す2個のグループに分離されている。2個のグループの間隔は、影響時間よりも長くなっている。右側のグループは影響時間よりも短いグループに、左側のグループは影響時間よりも長いグループになっている。
図45では、図44の左側のグループについて左側の事象との間隔が最も大きい事象およびそれに隣接する事象が、境界事象に選択されている。この境界事象により、左側のグループは点線の矩形で示す2個のグループに分離されている。2個のグループの間隔は、影響時間よりも長くなっている。左右のグループは影響時間よりも短いグループになっている。以上のようにして、図43から図45に示す準隔離集合を4個の完全隔離集合と5個の境界事象とに分割することができる。
仮に、連続する2個の事象を境界事象にした場合でもグループ間の間隔が影響時間よりも短い場合には、連続する境界事象の数を順次増やしていく。この分割の操作に使用するDBについて、以下に説明する。
図46は、実施の形態5のグループDBのレコードレイアウトを示す説明図である。グループDBは、準隔離集合を完全隔離集合と境界事象とに分割する際に使用するDBである。グループDBは、時刻フィールド、事象フィールド、時間差フィールドおよびフラグフィールドを有する。
時刻フィールドには、日時を示す数値が記録されている。事象フィールドには、時刻フィールドに記録された時刻に発生した被験者の状態の変化を示す記号が記録されている。時間差フィールドには、1つ後の事象との間の時間差が記録されている。フラグフィールドには、境界事象であることを示すフラグが記録されている。グループDBは、事象に対応する1つの時刻について1つのレコードを有する。グループDBは、サーバCPU22が必要に応じて補助記憶装置24または主記憶装置23に一時的に作成するDBである。
サーバCPU22は、時系列DB42中の本実施の形態の処理を行う準隔離集合に対応する部分を時刻フィールドおよび事象フィールドに複写する。なお、時系列DB42と同様にグループDBも時刻フィールドのデータの昇順で記録されている。
サーバCPU22は、時間差フィールドに、時刻フィールドに記録された値と次のレコードの時刻フィールドに記録された値との差を記録する。たとえば、図46の一番上に示すレコードの場合、時刻フィールドには712が記録されている。次のレコード、すなわち二番目に示すレコードの時刻フィールドには、719が記録されている。したがって、サーバCPU22は、一番上に示すレコードの時間差フィールドには719と712との差分である7を記録する。グループDBの最後のレコードは、グループDB内に次のレコードが存在しないため、空欄である。
サーバCPU22は、図46のグループDBの時間差フィールドを検索して最大値レコードを抽出する。図46の場合は、時間差フィールドに記録された値が最大なのは、楕円で示す15のレコードである。したがって、サーバCPU22は、このレコードのフラグフィールドに境界事象であることを示す「境界」と記録する。境界事象の前側のレコードの時刻フィールドは783、境界事象の後側のレコードの時刻フィールドは807である。したがってサーバCPU22は、境界事象前後のグループの間隔は、807と783との差分である24であり、2つのグループの間隔は影響時間よりも長いと判定する。また、サーバCPU22は、境界事象の後側のグループの長さは814と807との差分である7であるので、影響時間よりも短いグループであると判定する。同様に、サーバCPU22は、境界事象の前側のグループの長さは783と712との差分である71であるので影響時間よりも長いグループであると判定する。
サーバCPU22は、前側の長いグループの処理を開始する。サーバCPU22は、前側のグループ内で時間差フィールドを検索して最大値のレコードを抽出する。図46の場合は、時間差フィールドが最も大きいのは、長方形で示す13のレコードである。したがって、サーバCPU22は、このレコードのフラグフィールドに境界事象であることを示す「境界」と記録する。境界事象の前側のレコードの時刻フィールドは752、境界事象の後側のレコードの時刻フィールドは768である。したがってサーバCPU22は、境界フィールド前後のグループの間隔は、768と752との差分である16であり、2つのグループの間隔は影響時間よりも短いと判定する。
サーバCPU22は、時間差フィールドに13と記録されたレコードの前後のレコードの時間差フィールドに記録された値を比較し、大きい方のレコードのフラグフィールドに境界事象であることを示す「境界」と記録する。2個の境界事象の前側のレコードの時刻フィールドは752、後側のレコードの時刻フィールドは773である。したがってサーバCPU22は、境界事象前後のグループの間隔は、773と752との差分である21であり、2つのグループの間隔は影響時間よりも長いと判定する。また、サーバCPU22は、境界事象の後側のグループの長さは783と773との差分である6であるので、影響時間よりも短いグループであると判定する。サーバCPU22は、境界事象の前側のグループの長さは752と712との差分である40であるので影響時間よりも長いグループであると判定する。
以後、サーバCPU22は、影響時間よりも長いグループ内で時間差が最大値のレコードを抽出して境界事象であると判定し、グループ間の間隔が影響時間よりも長くなるまで隣接する事象を境界事象であると判定する操作を繰り返す。以上により、サーバCPU22は準隔離集合を4個の完全隔離集合と5個の境界事象とに分割する。
図47は、実施の形態5のグループ分割のサブルーチンの処理の流れを示すフローチャートである。本サブルーチンは、図35を使用して説明したグループ分割のサブルーチンの代わりに使用するサブルーチンである。図47を使用して、本実施の形態のグループ分割のサブルーチンの処理の流れを説明する。
サーバCPU22は、開始位置を1に、カウンタJを1に設定する(ステップS761)。開始位置は、一連の処理の適用を開始する最初のレコードである。Jは、連続して挿入する境界フラグの数を示すカウンタである。サーバCPU22は、ステップS503で取得したグループに対応するレコードを有するグループDBを作成する(ステップS861)。ここで作成するグループDBのレコードレイアウトは、図46を使用して説明したものである。サーバCPU22は、境界フラグ挿入のサブルーチンを起動する(ステップS862)。境界フラグ挿入のサブルーチンは、グループDBの境界フィールドに境界事象を示すフラグを挿入するサブルーチンである。境界フラグ挿入のサブルーチンの処理の流れは後述する。ステップS862で起動する境界フラグ挿入のサブルーチンは、ステップS503で取得したグループに含まれる全てのレコードを処理の対象とする。
サーバCPU22は、カウンタJに1を加算する(ステップS891)。サーバCPU22は、再分割フラグを初期値FALSEに設定する(ステップS864)。サーバCPU22は、グループDBの境界フィールドを検索して、開始位置から数えて最初の境界フラグが記録されたレコードを抽出する(ステップS865)。サーバCPU22は、ステップS765で抽出したレコードの1つ前のレコードの時刻フィールドに記録された値と、開始位置に対応するレコードの時刻フィールドに記録された値との差から時間差を算出する(ステップS866)。
サーバCPU22は、時間差が影響時間以下であるか否かを判定する(ステップS867)。影響時間を超えると判定した場合は(ステップS867でNO)、サーバCPU22は再分割フラグをTRUEに設定する(ステップS868)。サーバCPU22は、境界フラグ挿入のサブルーチンを起動する(ステップS870)。境界フラグ挿入のサブルーチンは、ステップS862で起動したサブルーチンと同一のサブルーチンである。ステップS870で起動する境界フラグ挿入のサブルーチンは、境界フラグに対応するレコードからステップS865で抽出したレコードの1つ前のレコードまでを処理の対象とする。
ステップS870の終了後または影響時間以下であると判定した場合(ステップS867でYES)、サーバCPU22は開始位置をステップS865で境界フラグを抽出したレコードの次のレコードを示す番号に設定する(ステップS871)。
サーバCPU22は、グループの処理が終了したか否かを判定する(ステップS872)。処理が終了していないと判定した場合は(ステップS872でNO)、サーバCPU22はステップS865に戻る。処理が終了したと判定した場合は(ステップS872でYES)、サーバCPU22は再分割フラグがFALSEであるか否かを判定する(ステップS873)。再分割フラグがFALSEではない、すなわちTRUEである場合は(ステップS873でNO)、サーバCPU22はステップS891に戻る。再分割フラグがFALSEであると判定した場合は(ステップS873でYES)、サーバCPU22は処理を終了する。
図48は、実施の形態5の境界フラグ挿入のサブルーチンの処理の流れを示すフローチャートである。境界フラグ挿入のサブルーチンは、グループDBの境界フィールドに境界事象を示すフラグを挿入するサブルーチンである。図48を使用して本実施の形態の境界フラグ挿入のサブルーチンの処理の流れを説明する。
サーバCPU22は、処理対象のレコードから時間差フィールドに記録された値が最大のレコードを抽出し、フラグフィールドに境界事象であることを示す「境界」と記録する(ステップS901)。サーバCPU22は、境界事象の前後の時間差を算出する(ステップS902)。具体的には、境界事象の前後のレコードの時刻フィールドに記録された値の差分を算出する。
サーバCPU22は、算出した時間差が影響時間を超えるか否かを判定する(ステップS903)。影響時間以下であると判定した場合(ステップS903でNO)、サーバCPU22は境界事象の前後のレコードの時間差フィールドを比較する(ステップS904)。サーバCPU22は、時間差フィールドが大きいと判定した方のレコードのフラグフィールドに、境界事象であることを示す「境界」と記録する(ステップS905)。サーバCPU22はステップS902に戻る。
算出した時間差が影響時間を超えると判定した場合(ステップS903でYES)、サーバCPU22は処理を終了する。
本実施の形態によると、DBの並べ替えのような負荷の大きい処理を避けることができるので、計算時間が短い情報処理システム10を提供することができる。
[実施の形態6]
本実施の形態は、1日分ごとに組み合わせ回数DB43を作成しておく形態に関する。図49は、実施の形態6の組み合わせ回数DB43のレコードレイアウトを示す説明図である。実施の形態1と共通する部分については、説明を省略する。
本実施の形態の組み合わせ回数DB43は、第1事象の後、所定の影響時間内に第2事象が発生した回数を1日分づつ記録するDBである。組み合わせ回数DB43は、日付フィールド、第1事象フィールドおよび第2事象フィールドを備える。日付フィールドには、関連づけられた日付が記録されている。本実施の形態の組み合わせ回数DB43は、図5を使用して説明した組み合わせ回数DB43に日付フィールドを追加したDBである。なお、日付の区切りは0時に限定しない。事象の発生頻度が少ない時間を適宜選択する。
本実施の形態では、同様に図7を使用して説明した発生数DB44および組み合わせ時刻DBにも日付フィールドを追加する。本実施の形態で使用する発生数DB44および組み合わせ時刻DBの図示は省略する。
図50は、実施の形態6のプログラムの処理の流れを示すフローチャートである。図50に示すプログラムは、時系列DB42からレコードを取得して、影響時間内に2つの事象の組み合わせが発生する回数を1日分ごとに算出するプログラムである。図50を使用して、本実施の形態のプログラムの処理の流れを説明する。
サーバCPU22はデータを処理する日付を取得する(ステップS921)。毎日本実施の形態のプログラムの処理を行う場合には、前日の日付とすることが望ましい。サーバCPU22は、組み合わせ回数DB43および組み合わせ時刻DBを初期化する(ステップS922)。すなわちサーバCPU22は、ステップS921で取得した日付に対応する組み合わせ回数DB43の各フィールドの値を初期値である0に設定する。さらに、サーバCPU22は、ステップS921で取得した日付に対応する組み合わせ時刻DBのレコードを全て削除する。
サーバCPU22は、グループ取得のサブルーチンを起動する(ステップS923)。グループ取得のサブルーチンは、時系列DB42内のデータから、一つ前および一つ後ろの事象との間の時間が影響時間以上離れた事象のグループを取得するサブルーチンである。グループ取得のサブルーチンは、たとえば図15を使用して説明したサブルーチンを使用する。
サーバCPU22は、取得したグループの最初のイベントと最後のイベントとの間の時間が影響時間以下であるか否かを判定する(ステップS924)。影響時間以下である場合は(ステップS924でYES)、サーバCPU22は完全隔離カウントのサブルーチンを起動する(ステップS925)。完全隔離カウントのサブルーチンは、完全隔離集合内のイベントの組み合わせを組み合わせ回数DB43に記録するサブルーチンである。完全隔離カウントのサブルーチンは、たとえば図16を使用して説明したサブルーチンを使用する。
影響時間より長い場合は(ステップS924でNO)、サーバCPU22は準隔離カウントのサブルーチンを起動する(ステップS926)。準隔離カウントのサブルーチンは、準隔離集合内のイベントの組み合わせを組み合わせ回数DB43に記録するサブルーチンである。準隔離カウントのサブルーチンは、たとえば図17を使用して説明したサブルーチンを使用する。
ステップS925またはステップS926の終了後、サーバCPU22は1日分の時系列DB42の解析を終了したか否かを判定する(ステップS927)。サーバCPU22は、解析を終了する位置を、前述のとおりステップS502で取得する。終了していないと判定した場合は(ステップS927でNO)、サーバCPU22はステップS923に戻る。終了したと判定した場合は(ステップS927でYES)、サーバCPU22はステップS921で取得した日付における各事象の数を数えて発生数DB44を作成する(ステップS928)。サーバCPU22は、以上の処理で作成した組み合わせ回数DB43、組み合わせ時刻DBおよび発生数DB44を補助記憶装置24に保存する。その後、サーバCPU22は処理を終了する。
本実施の形態によると、1日分ごとの組み合わせ回数DB43、組み合わせ時刻DBおよび発生数DB44が作成されて補助記憶装置24に保存されている。したがってデータを解析するユーザは、解析対象の日のデータを取得して汎用の表計算ソフト等に読み込ませる事により、容易にデータの解析を行うことができる。
[実施の形態7]
図51は、実施の形態7の情報処理装置の動作を示す機能ブロック図である。情報処理装置は、サーバCPU22による制御に基づいて以下のように動作する。取得部61は、複数の種類の事象と該事象に関連付けられた時刻とに関する情報を含む時系列データを時系列DB42から取得する。分割部62は、時系列データを時刻の間隔が影響時間よりも大きい複数の群に時間軸上で分割する。関連付け部63は、群の開始時刻から終了時刻までの時間が影響時間以下の場合には、群に含まれる事象の組み合わせと、発生数とを関連付ける。
[実施の形態8]
実施の形態8は、汎用のコンピュータとプログラム71とを組み合わせて動作させることにより、情報処理システム10を実現する形態に関する。図52は、実施の形態8の情報処理システム10を構成するサーバ20およびクライアント30の構成を示す説明図である。図52を使用して、本実施の形態の構成を説明する。なお、実施の形態1と共通する部分の説明は省略する。
サーバ20は、サーバCPU22、主記憶装置23、補助記憶装置24、通信部25、読取部28およびバスを備える。読取部28は、たとえば光学ディスク読取装置である。
プログラム71は、可搬型記録媒体72に記録されている。サーバCPU22は、読取部28を介してプログラム71を読み込み、補助記憶装置24に保存する。またサーバCPU22は、サーバ20内に実装されたフラッシュメモリ等の半導体メモリ73に記憶されたプログラム71を読出しても良い。さらに、サーバCPU22は、通信部25およびネットワーク19を介して接続される図示しない他のサーバコンピュータからプログラム71をダウンロードして補助記憶装置24に保存しても良い。
プログラム71は、サーバ20の制御プログラムとしてインストールされ、主記憶装置23にロードして実行される。これにより、情報処理システムは上述した情報処理システム10として機能する。
各実施例で記載されている技術的特徴(構成要件)はお互いに組み合わせ可能であり、組み合わせすることにより、新しい技術的特徴を形成することができる。
今回開示された実施の形態はすべての点で例示であって、制限的なものでは無いと考えられるべきである。本発明の範囲は、上記した意味では無く、請求の範囲によって示され、請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
(付記1)
事象の種類と該事象が生じた時刻に関する情報を含む時系列データを取得し、
前記時系列データを、一の事象が生じた時刻から該事象の次の事象が生じた時刻までの間の間隔が、双方の事象に因果関係があるとみなす所定時間よりも長い箇所で群に分割する
処理をコンピュータに実行させるプログラム。
(付記2)
前記群毎に、群に含まれる事象の組み合わせと、該組み合わせの発生数とを関連付ける
処理をコンピュータに実行させる付記1に記載のプログラム。
(付記3)
前記群の開始時刻から終了時刻までの時間が前記所定時間より長い場合には、該群の最初の事象から、該最初の事象が生じた時刻から該群の中の境界事象の前の事象が生じた時刻までの時間が前記所定時間より短く、該境界事象の前の事象が生じた時刻から、該境界事象の次の事象が生じた時刻までの間隔が該所定時間よりも長い境界事象の前の事象までの第2群を時間軸上で該群から分割し、
該第2群に含まれる事象の組み合わせと、該組み合わせの発生数とを関連付け、
前記境界事象が生じた時刻から前記所定時間の範囲の時刻に生じた事象と前記境界事象との組み合わせと、該組み合わせの発生数とを関連付ける
処理をコンピュータに実行させる付記1または付記2に記載のプログラム。
(付記4)
前記境界事象は、時間軸上で隣接する事象との時間間隔に基づいて定められる
付記3に記載のプログラム。
(付記5)
前記境界事象は、時間軸上で隣接する事象との時間間隔に基づいて定められた事象および時間軸上で該事象に連続する事象である
付記3または付記4に記載のプログラム。
(付記6)
前記境界事象には、時間軸上で隣接する事象との時間間隔が前記群内で最大の事象を含む
付記3から付記5のいずれか一つに記載のプログラム。
(付記7)
前記群の開始時刻から終了時刻までの時間が前記所定時間より長い場合には、時間軸上で所定の数の境界事象を介して隣接する全ての複数の事象間の時間間隔が所定時間よりも大きい複数の第2群に該群を分割し、
前記第2群の開始時刻から終了時刻までの時間が前記所定時間より長い場合には、前記所定の数を増やして時間軸上で該所定の数の境界事象を介して隣接する全ての複数の事象間の間隔が所定時間よりも大きい複数の第2群に該第2群をさらに分割することを繰り返し、
開始時刻から終了時刻までの時間が前記所定時間より短い前記第2群に含まれる事象の組み合わせと、該組み合わせの発生数とを関連付け、
前記境界事象が生じた時刻から前記所定時間の範囲の時刻に生じた事象と前記境界事象との組み合わせと、該組み合わせの発生数とを関連付ける
処理をコンピュータに実行させる付記1に記載のプログラム。
(付記8)
前記所定の数は、前記群内の各事象と時間軸上で隣接する事象との時間間隔を長いものから順次加算して前記所定時間を超える最小の時間間隔の数を初期値とする
付記7に記載のプログラム。
(付記9)
前記群の開始時刻から終了時刻までの時間が前記所定時間より長い場合には、時間軸上で隣接する事象との間隔が該群内で最大である境界事象により、時間軸上で該群を第2群に分割し、
前記第2群の開始時刻から終了時刻までの時間が前記所定時間より長い場合には、前記境界事象に時間軸上で隣接する事象を境界事象に加えることを繰り返し、
開始時刻から終了時刻までの時間が前記所定時間より短い前記第2群に含まれる事象の組み合わせと、該組み合わせの発生数とを関連付け、
前記境界事象が生じた時刻から前記所定時間の範囲の時刻に生じた事象と前記境界事象との組み合わせと、該組み合わせの発生数とを関連付ける
処理をコンピュータに実行させる付記1に記載のプログラム。
(付記10)
前記群の開始時刻から終了時刻までの時間が前記所定時間より長い場合には、時間軸上で隣接する事象との間隔が該群内で最大である境界事象により、時間軸上で該群を第2群に分割し、
前記第2群の開始時刻から終了時刻までの時間が前記所定時間より長い場合には、時間軸上で隣接する事象との間隔が該第2群内で最大である境界事象により時間軸上で該第2群をさらに第2群に分割することを繰り返し、
開始時刻から終了時刻までの時間が前記所定時間より短い前記第2群に含まれる事象の組み合わせと、該組み合わせの発生数とを関連付け、
前記境界事象が生じた時刻から前記所定時間の範囲の時刻に生じた事象と前記境界事象との組み合わせと、該組み合わせの発生数とを関連付ける
処理をコンピュータに実行させる付記1に記載のプログラム。
(付記11)
前記群または第2群の開始時刻から終了時刻までの時間が前記所定時間より長い場合には、該群または第2群内の各事象を開始時刻とする前記所定時間長さの窓内の時刻に関連付けられた前記事象の組み合わせと該組み合わせの発生数とを関連付ける
処理をコンピュータに実行させる付記1から付記10のいずれか一つに記載のプログラム。
(付記12)
前記組み合わせは、1の事象と該事象よりも後に発生した他の事象との組み合わせである
付記2から付記11のいずれか一つに記載のプログラム。
(付記13)
前記組み合わせごとに、前記発生数の和を算出する処理をコンピュータに実行させる付記2から付記12のいずれか一つに記載のプログラム。
(付記14)
前記時系列データに含まれる前記事象の数を前記種類ごとに算出し、
1の種類の事象の数と、該事象と該事象の後に発生した他の種類の事象とに対応する前記和との比を算出する
処理をコンピュータに実行させる付記13に記載のプログラム。
(付記15)
前記時刻は、前記事象が発生したことが検知された時刻である付記1から付記14のいずれか一つに記載のプログラム。
(付記16)
前記時刻は、前記事象が発生したことが記録された時刻である付記1から付記14のいずれか一つに記載のプログラム。
(付記17)
事象の種類と該事象が生じた時刻に関する情報を含む時系列データを取得し、
前記時系列データを、一の事象が生じた時刻から該事象の次の事象が生じた時刻までの間の間隔が、双方の事象に因果関係があるとみなす所定時間よりも長い箇所で群に分割する、
処理をコンピュータに実行させる情報処理方法。
(付記18)
事象の種類と該事象が生じた時刻に関する情報を含む時系列データを取得する取得部と、
前記時系列データを、一の事象が生じた時刻から該事象の次の事象が生じた時刻までの間の間隔が、双方の事象に因果関係があるとみなす所定時間よりも長い箇所で群に分割する分割部と
を備える情報処理装置。