(57)【要約】  多数の事象の発生時刻を記録した時系列データから、関連する事象の組み合わせを効率良く抽出するプログラム等を提供すること。  プログラムは、事象の種類と該事象が生じた時刻に関する情報を含む時系列データを取得し、前記時系列データを、一の事象が生じた時刻から該事象の次の事象が生じた時刻までの間の間隔が、双方の事象に因果関係があるとみなす所定時間よりも長い箇所で群に分割する処理をコンピュータ２０に実行させる。
2017056179.tif 000002
【特許請求の範囲】
【請求項１】
事象の種類と該事象が生じた時刻に関する情報を含む時系列データを取得し、
前記時系列データを、一の事象が生じた時刻から該事象の次の事象が生じた時刻までの間の間隔が、双方の事象に因果関係があるとみなす所定時間よりも長い箇所で群に分割する
処理をコンピュータに実行させるプログラム。
【請求項２】
前記群毎に、群に含まれる事象の組み合わせと、該組み合わせの発生数とを関連付ける
処理をコンピュータに実行させる請求項１に記載のプログラム。
【請求項３】
前記群の開始時刻から終了時刻までの時間が前記所定時間より長い場合には、該群の最初の事象から、該最初の事象が生じた時刻から該群の中の境界事象の前の事象が生じた時刻までの時間が前記所定時間より短く、該境界事象の前の事象が生じた時刻から、該境界事象の次の事象が生じた時刻までの間隔が該所定時間よりも長い境界事象の前の事象までの第２群を時間軸上で該群から分割し、
該第２群に含まれる事象の組み合わせと、該組み合わせの発生数とを関連付け、
前記境界事象が生じた時刻から前記所定時間の範囲の時刻に生じた事象と前記境界事象との組み合わせと、該組み合わせの発生数とを関連付ける
処理をコンピュータに実行させる請求項１または請求項２に記載のプログラム。
【請求項４】
前記群の開始時刻から終了時刻までの時間が前記所定時間より長い場合には、時間軸上で所定の数の境界事象を介して隣接する事象との間隔が所定時間よりも大きい複数の第２群に該群を分割し、
前記第２群の開始時刻から終了時刻までの時間が前記所定時間より長い場合には、前記所定の数を増やして時間軸上で該所定の数の境界事象を介して隣接する事象との間隔が所定時間よりも大きい複数の第２群に該第２群をさらに分割することを繰り返し、
開始時刻から終了時刻までの時間が前記所定時間より短い前記第２群に含まれる事象の組み合わせと、該組み合わせの発生数とを関連付け、
前記境界事象が生じた時刻から前記所定時間の範囲の時刻に生じた事象と前記境界事象との組み合わせと、該組み合わせの発生数とを関連付ける
処理をコンピュータに実行させる請求項１または請求項２に記載のプログラム。
【請求項５】
前記所定の数は、前記群内の各事象と時間軸上で隣接する事象との時間間隔を長いものから順次加算して前記所定時間を超える最小の時間間隔の数を初期値とする
請求項４に記載のプログラム。
【請求項６】
前記組み合わせごとに、前記発生数の和を算出する処理をコンピュータに実行させる請求項２から請求項５のいずれか一つに記載のプログラム。
【請求項７】
前記時系列データに含まれる前記事象の数を前記種類ごとに算出し、
１の種類の事象の数と、該事象と該事象の後に発生した他の種類の事象とに対応する前記和との比を算出する
処理をコンピュータに実行させる請求項６に記載のプログラム。
【請求項８】
事象の種類と該事象が生じた時刻に関する情報を含む時系列データを取得し、
前記時系列データを、一の事象が生じた時刻から該事象の次の事象が生じた時刻までの間の間隔が、双方の事象に因果関係があるとみなす所定時間よりも長い箇所で群に分割する、
処理をコンピュータに実行させる情報処理方法。
【請求項９】
事象の種類と該事象が生じた時刻に関する情報を含む時系列データを取得する取得部と、
前記時系列データを、一の事象が生じた時刻から該事象の次の事象が生じた時刻までの間の間隔が、双方の事象に因果関係があるとみなす所定時間よりも長い箇所で群に分割する分割部と
を備える情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム、情報処理装置および情報処理方法に関する。
【背景技術】
【０００２】
コンピュータネットワーク等を使用して、多数の事象の発生時刻を記録した時系列データの収集が行われている。事象間の時間間隔と事象の発生パターンとを組み合わせて、時系列データを複数の系列に分割する方法が開示されている（特許文献１）。【０００３】
時系列データを固定長の窓により切り出して、窓内の事象の組み合わせを数えた後に、窓を所定の時間ずらす事を繰り返して、時系列データ中に含まれる相互に関連する事象の組み合わせを特定する方法が開示されている（非特許文献１）。【０００４】
窓の先頭の事象と、窓内の他の事象との組み合わせを数えた後に、窓の開始位置を２番目の事象にずらす事を繰りかえして、時系列データ中に含まれる相互に関連する事象の組み合わせを特定する方法が開示されている（非特許文献２）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１０−６１４１２号公報
【非特許文献】
【０００６】
【非特許文献１】H. Mannila、"Discovery of frequent episodes in event sequences"、Data mining and knowledge discovery、１９９７年、１巻、ｐ２５９−２８９
【非特許文献２】A. Tang、"Efficient mining of intertransaction association rules"、IEEE Transactions on Knowledge and data engineering、２００３年、１５巻、ｐ４３−５６
【発明の概要】
【発明が解決しようとする課題】
【０００７】
特許文献１の方法は、時系列データを分割する方法であり、相互に関連する事象の組み合わせを特定することはできない。非特許文献１および非特許文献２の方法では、窓をずらす操作に時間がかかるため、時系列データの量が多い場合には計算時間が長くなる。【０００８】
一つの側面では、多数の事象の発生時刻を記録した時系列データから、関連する事象の組み合わせを効率良く抽出するプログラム等を提供することを目的とする。
【課題を解決するための手段】
【０００９】
一態様では、本発明のプログラムは、事象の種類と該事象が生じた時刻に関する情報を含む時系列データを取得し、前記時系列データを、一の事象が生じた時刻から該事象の次の事象が生じた時刻までの間の間隔が、双方の事象に因果関係があるとみなす所定時間よりも長い箇所で群に分割する処理をコンピュータに実行させる。
【発明の効果】
【００１０】
一つの側面では、多数の事象の発生時刻を記録した時系列データから、関連する事象の組み合わせを効率良く抽出するプログラム等を提供することができる。
【図面の簡単な説明】
【００１１】
【図１】情報処理システムの構成を示す説明図である。
【図２】サーバおよびクライアントの構成を示す説明図である。
【図３】事象ＤＢのレコードレイアウトを示す説明図である。
【図４】時系列ＤＢのレコードレイアウトを示す説明図である。
【図５】組み合わせ回数ＤＢのレコードレイアウトを示す説明図である。
【図６】組み合わせ時刻ＤＢのレコードレイアウトを示す説明図である。
【図７】発生数ＤＢのレコードレイアウトを示す説明図である。
【図８】組み合わせ確率ＤＢのレコードレイアウトを示す説明図である。
【図９】窓ＤＢのレコードレイアウトを示す説明図である。
【図１０】事象の発生状態の例を示す説明図である。
【図１１】事象の発生状態の例を示す説明図である。
【図１２】事象の発生状態の例を示す説明図である。
【図１３】事象の発生状態の例を示す説明図である。
【図１４】プログラムの処理の流れを示すフローチャートである。
【図１５】グループ取得のサブルーチンの処理の流れを示すフローチャートである。
【図１６】完全隔離カウントのサブルーチンの処理の流れを示すフローチャートである。
【図１７】準隔離カウントのサブルーチンの処理の流れを示すフローチャートである・。
【図１８】窓ＤＢを作成するサブルーチンの処理の流れを示すフローチャートである。
【図１９】窓ＤＢを作成するサブルーチンの処理の流れを示すフローチャートである。
【図２０】情報処理結果を表示する画面を示す説明図である。
【図２１】情報処理結果を表示する画面を示す説明図である。
【図２２】情報処理結果を表示する画面を示す説明図である。
【図２３】比較例のプログラムの処理の流れを示すフローチャートである。
【図２４】計算時間短縮の効果を示す説明図である。
【図２５】計算時間短縮の効果を示す説明図である。
【図２６】実施の形態２の時系列ＤＢのレコードレイアウトを示す説明図である。
【図２７】実施の形態２のプログラムの処理の流れを示すフローチャートである。
【図２８】実施の形態２のプログラムの処理の流れを示すフローチャートである。
【図２９】実施の形態３の事象の発生状態の例を示す説明図である。
【図３０】実施の形態３の事象の発生状態の例を示す説明図である。
【図３１】実施の形態３のグループＤＢのレコードレイアウトを示す説明図である。
【図３２】実施の形態３のグループＤＢのレコードレイアウトを示す説明図である
【図３３】実施の形態３のプログラムの処理の流れを示すフローチャートである。
【図３４】実施の形態３のプログラムの処理の流れを示すフローチャートである。
【図３５】実施の形態３のグループ分割のサブルーチンの処理の流れを示すフローチャートである。
【図３６】実施の形態３の境界フラグ挿入のサブルーチンの処理の流れを示すフローチャートである。
【図３７】実施の形態３の境界フラグの前後をカウントするサブルーチンの処理の流れを示すフローチャートである。
【図３８】実施の形態４の事象の発生状態の例を示す説明図である。
【図３９】実施の形態４の時間差加算ＤＢのレコードレイアウトを示す説明図である。
【図４０】実施の形態４の時間差加算ＤＢのレコードレイアウトを示す説明図である。
【図４１】実施の形態４のグループ分割のサブルーチンの処理の流れを示すフローチャートである。
【図４２】実施の形態４の境界数算出のサブルーチンの処理の流れを示すフローチャートである。
【図４３】実施の形態５の事象の発生状態の例を示す説明図である。
【図４４】実施の形態５の事象の発生状態の例を示す説明図である。
【図４５】実施の形態５の事象の発生状態の例を示す説明図である。
【図４６】実施の形態５のグループＤＢのレコードレイアウトを示す説明図である。
【図４７】実施の形態５のグループ分割のサブルーチンの処理の流れを示すフローチャートである。
【図４８】実施の形態５の境界フラグ挿入のサブルーチンの処理の流れを示すフローチャートである。
【図４９】実施の形態６の組み合わせ回数ＤＢのレコードレイアウトを示す説明図である。
【図５０】実施の形態６のプログラムの処理の流れを示すフローチャートである。
【図５１】実施の形態７の情報処理装置の動作を示す機能ブロック図である。
【図５２】実施の形態８の情報処理システムの構成を示す説明図である。
【発明を実施するための形態】
【００１２】
［実施の形態１］
図１は、情報処理システム１０の構成を示す説明図である。情報処理システム１０は、サーバ２０、クライアント３０、センサ制御装置１２、携帯情報機器１７およびネットワーク１９を備える。携帯情報機器１７には、生体センサ１６が無線により接続されている。センサ制御装置１２には、ドアセンサ１３、カメラ１４およびベッドセンサ１５が接続されている。サーバ２０は、本実施の形態の情報処理装置の一例である。サーバ２０およびクライアント３０の構成については後述する。
【００１３】
ネットワーク１９は、たとえばインターネット、公衆回線網、専用回線網等の情報通信網である。携帯情報機器１７は、被験者が身に着けたスマートフォン、携帯電話、ウェアラブルコンピュータなどの情報機器である。携帯情報機器１７は、無線ＬＡＮ（Local Area Network）または移動体通信回線を介してネットワークに接続されている。生体センサ１６は、被験者の脈拍、血中酸素濃度、呼吸数等を計測するセンサである。携帯情報機器１７には、複数の生体センサ１６が接続されていても良い。また、携帯情報機器１７には、歩数計等の生体センサ１６が内蔵されていても良い。
【００１４】
ドアセンサ１３は、ドアの開閉またはドアを人が通過したことを検知するセンサである。ドアセンサ１３は被験者の寝室のドア等、被験者の住居の各ドアに取り付けられている。カメラ１４は、映像を使用して被験者の動作を検出するセンサである。カメラ１４は、被験者の寝室内部等、被験者の住居の各所に取り付けられている。ベッドセンサ１５は、就寝中の被験者の状態を検出するセンサである。ベッドセンサ１５は、被験者のベッドに取り付けられている。センサ制御装置１２には、室内の温度を検知する温度計、室内の湿度を検知する湿度計、室内の明るさを検知する照度計等の各種センサが接続されていても良い。またセンサ制御装置１２には、空調装置、照明装置等の家屋内の各種機器の運転状態を検知するセンサが接続されていても良い。また、センサが直接ネットワーク１９に接続されていても良い。
【００１５】
センサ制御装置１２および携帯情報機器１７は、接続された各センサから取得した情報を解析して得た被験者の状態の変化を、ネットワーク１９を介してサーバ２０に送信する。送信する情報の例は後述する。なお、情報処理システム１０には、たとえば被験者の住居と職場等、複数の場所にセンサ制御装置１２が接続されていても良い。
【００１６】
たとえばＩＣカードを使用して自動改札機を通過したという情報および買い物をしたという情報等が、ＩＣカードの運営事業者のサーバからネットワーク１９を介してサーバ２０に送信されても良い。たとえば被験者の心電図を２４時間にわたって記録したホルタ心電図のデータを医療機関で解析して得た情報がサーバ２０に送信されても良い。被験者が携帯情報端末を操作して入力した、たとえば「薬を飲んだ」「頭痛がする」等、センサでは検知しきれない情報をサーバ２０に送信しても良い。
【００１７】
図２は、サーバ２０およびクライアント３０の構成を示す説明図である。サーバ２０は、サーバＣＰＵ（Central Processing Unit）２２、主記憶装置２３、補助記憶装置２４、通信部２５、およびバスを備える。本実施の形態のサーバ２０は、汎用のパソコンまたはデータセンタに設置された大型計算機等である。
【００１８】
サーバＣＰＵ２２は、本実施の形態に係るプログラムを実行する演算制御装置である。サーバＣＰＵ２２には、一または複数のＣＰＵまたはマルチコアＣＰＵ等が使用される。サーバＣＰＵ２２は、バスを介してサーバ２０を構成するハードウェア各部と接続されている。
【００１９】
主記憶装置２３は、ＳＲＡＭ（Static Random Access Memory）、ＤＲＡＭ（Dynamic Random Access Memory）、フラッシュメモリ等の記憶装置である。主記憶装置２３には、サーバＣＰＵ２２が行う処理の途中で必要な情報およびサーバＣＰＵ２２で実行中のプログラムが一時的に保存される。
【００２０】
補助記憶装置２４は、ＳＲＡＭ、フラッシュメモリ、ハードディスクまたは磁気テープ等の記憶装置である。補助記憶装置２４には、サーバＣＰＵ２２に実行させるプログラム、事象ＤＢ４１、時系列ＤＢ４２、組み合わせ回数ＤＢ４３、発生数ＤＢ４４および組み合わせ確率ＤＢ４５等、プログラムの実行に必要な各種情報が保存される。通信部２５は、ネットワーク１９との通信を行うインターフェイスである。
【００２１】
クライアント３０は、クライアントＣＰＵ３２、主記憶装置３３、補助記憶装置３４、通信部３５、入力部３６、表示部３７およびバスを備える。本実施の形態のクライアント３０は、汎用のパソコン、タブレットまたはスマートフォン等である。
【００２２】
クライアントＣＰＵ３２は、本実施の形態に係るプログラムを実行する演算制御装置である。クライアントＣＰＵ３２には、一または複数のＣＰＵまたはマルチコアＣＰＵ等が使用される。クライアントＣＰＵ３２は、バスを介してクライアント３０を構成するハードウェア各部と接続されている。
【００２３】
主記憶装置３３は、ＳＲＡＭ、ＤＲＡＭ、フラッシュメモリ等の記憶装置である。主記憶装置３３には、クライアントＣＰＵ３２が行う処理の途中で必要な情報およびクライアントＣＰＵ３２で実行中のプログラムが一時的に保存される。
【００２４】
補助記憶装置３４は、ＳＲＡＭ、フラッシュメモリ、ハードディスクまたは磁気テープ等の記憶装置である。補助記憶装置３４には、クライアントＣＰＵ３２に実行させるプログラムおよびプログラムの実行に必要な各種情報が保存される。通信部３５は、ネットワーク１９との通信を行うインターフェイスである。
【００２５】
図３は、事象ＤＢ４１のレコードレイアウトを示す説明図である。事象ＤＢ４１は、記号と本実施の形態のプログラムが処理する被験者の状態の変化の内容とを関連付けるＤＢである。事象ＤＢ４１は、記号フィールドおよび内容フィールドを備える。記号フィールドには、文字または数値等で示す記号が記録されている。内容フィールドには、記号フィールドに記録された記号が示す被験者の状態の変化の内容が記録されている。なお、図３では、「ベッドから降りた」等の被験者の動作を記録したレコードを例示しているが、たとえば「寝室の照明が消えた」「室温が２８度を超えた」等、被験者の周囲の環境変化を内容フィールドに記録したレコードが含まれていても良い。また、たとえば「歩行時間が１０分を超えた」等、被験者の状態の継続時間の経過を内容フィールドに記録したレコードが含まれていても良い。以後の説明では、このように継続時間の経過を示す事象の場合にも、事象が発生した、または事象が生じたと表現する場合がある。記号ＤＢ４１は、１つの記号について、１つのレコードを有する。
【００２６】
図４は、時系列ＤＢ４２のレコードレイアウトを示す説明図である。時系列ＤＢ４２は、発生した事象を示す記号と、その事象に関連付けられた時刻、たとえばその事象が発生した時刻とを関連づけるＤＢである。時系列ＤＢ４２は、時刻フィールドおよび事象フィールドを備える。時刻フィールドには、日時を示す数値が記録されている。説明を簡単にするために、以後の説明では時刻フィールドに記録されている数字の単位に「秒」を使用する。なお、時刻フィールドには、たとえばマイクロ秒またはナノ秒など、同時に複数の事象が発生しない程度に細かい単位で時刻を識別できる数値を使用する。
【００２７】
事象フィールドには、時刻フィールドに記録された時刻に発生した被験者の状態の変化を示す記号が記録されている。事象フィールドに記録された記号をキーとして事象ＤＢ４１を検索することにより、実際に発生した事象の内容を知ることができる。時系列ＤＢ４２は、事象に対応する１つの時刻について１つのレコードを有する。時系列ＤＢ４２のレコードは、時刻フィールドの昇順に配列されている。
【００２８】
図５は、組み合わせ回数ＤＢ４３のレコードレイアウトを示す説明図である。組み合わせ回数ＤＢ４３は、第１事象の後、所定の時間内に第２事象が発生した回数を記録するＤＢである。ここで、所定の時間は第１事象が発生した事の影響を受けて、第２事象が発生したという因果関係または相関関係が存在し得る時間をいう。以後の説明ではこの所定の時間を影響時間と呼ぶ。影響時間の長さは、たとえば３０秒間である。
【００２９】
組み合わせ回数ＤＢ４３は、第１事象フィールドおよび第２事象フィールドを備える。第１事象フィールドは、図３を使用して説明した事象ＤＢ４１の記号フィールドに対応するフィールドを備える。第２事象フィールドには、図３を使用して説明した事象ＤＢ４１の記号フィールドに対応する記号が記録されている。組み合わせ回数ＤＢ４３は、事象ＤＢ４１の記号フィールドと同数のレコードを有する。組み合わせ回数ＤＢ４３は、時系列ＤＢ４２を解析して作成する。
【００３０】
たとえば、図５中の第２事象フィールドがＡのレコードの、Ｄフィールドには、１７９という数字が記録されている。これは、Ｄの事象が発生した後、所定の影響時間内にＡの事象が発生した回数が１７９回である事を示している。ここで、影響時間は、発生した事象が他の事象に影響を与える可能性のある時間である。影響時間は、あらかじめ補助記憶装置２４に記憶されている。本実施の形態においては、影響時間が２０秒の場合を例にして説明する。
【００３１】
図６は、組み合わせ時刻ＤＢのレコードレイアウトを示す説明図である。組み合わせ時刻ＤＢは、第１事象の後、所定の影響時間内に第２事象が発生した時刻を記録するＤＢである。組み合わせ時刻ＤＢは、第１事象フィールド、第２事象フィールドおよび時刻フィールドを備える。第１事象フィールドには、第１事象を示す記号が記録されている。第２事象フィールドには、第２事象を示す記号が記録されている。時刻フィールドには、第２事象が発生した時刻が記録されている。組み合わせ時刻ＤＢは、影響時間内に発生した第１事象と第２事象の一つの組み合わせについて、１つのレコードを有する。
【００３２】
図７は、発生数ＤＢ４４のレコードレイアウトを示す説明図である。発生数ＤＢ４４は、各事象とその発生回数とを関連づけるＤＢである。発生数ＤＢ４４は、事象フィールドと発生数フィールドを備える。事象フィールドには、図３を使用して説明した事象ＤＢ４１の記号フィールドに対応する記号が記録されている。発生数フィールドには、各事象の発生回数が記録されている。発生数ＤＢ４４は、事象ＤＢ４１の記号フィールドと同数のレコードを有する。発生数ＤＢ４４は、時系列ＤＢ４２を解析して作成する。
【００３３】
図８は、組み合わせ確率ＤＢ４５のレコードレイアウトを示す説明図である。組み合わせ確率ＤＢ４５は、第１事象の後、所定の影響時間内に第２事象が発生した確率を記録するＤＢである。組み合わせ回数ＤＢ４３は、第１事象フィールドおよび第２事象フィールドを備える。第１事象フィールドは、図３を使用して説明した事象ＤＢ４１の記号フィールドに対応するフィールドを備える。第２事象フィールドには、図３を使用して説明した事象ＤＢ４１の記号フィールドに対応する記号が記録されている。組み合わせ回数ＤＢ４３は、事象ＤＢ４１の記号フィールドと同数のレコードを有する。組み合わせ回数ＤＢ４３は、組み合わせ回数ＤＢ４３および発生数ＤＢ４４を組み合わせて作成する。
【００３４】
たとえば、図８中の第２事象フィールドがＡのレコードの、Ｃフィールドには、１４％という数字が記録されている。これは、図５に示すＤの事象が発生した後、所定の影響時間内にＡの事象が発生した回数である１７９回と、図７に示すＤの事象が発生した回数１３２４回との比をパーセントで表示した値である。
【００３５】
図９は、窓ＤＢのレコードレイアウトを示す説明図である。窓ＤＢは、時刻フィールドに記録された時間が影響時間の範囲内であるレコードを、時系列ＤＢ４２から取り出したＤＢである。窓列ＤＢは、時刻フィールドおよび事象フィールドを備える。時刻フィールドには、日時を示す数値が記録されている。時系列ＤＢ４２は、事象に対応する１つの時刻について１つのレコードを有する。窓ＤＢは、時系列ＤＢ４２を基に随時作成される。
【００３６】
図１０から図１３は、事象の発生状態の例を示す説明図である。図１０から図１３を使用して、本実施の形態で解析する事象の例を説明する。図１０から図１３の横軸は時間である。縦軸は発生した事象の記号を示す。黒丸は、横軸で示す時刻に、縦軸で示す事象が発生したことを示す。図１０から図１３は、図４を使用して説明した時系列ＤＢ４２に記録された情報を図で表現したものである。
【００３７】
図１０は、０秒から２００秒までの範囲の時間における事象の発生状態を示す。本実施の形態においては、２０秒付近、１１０秒付近および１７０秒付近の、影響時間である２０秒よりも短い時間帯に事象が集中している。各々の事象が集中した時間帯同士は、影響時間である２０秒よりも離れている。
【００３８】
図１１は、図１０の横軸が１０秒から２０秒の範囲を拡大した図である。図１１に黒丸で示す９個の事象の集合は、影響時間の範囲内に発生しているので、１つの事象と、その後に発生した事象との間に何らかの因果関係または相関関係が存在する可能性がある。また、単なる偶然で近接した時間に複数の事象が発生した可能性もある。数多くのデータを収集して解析した場合に、影響時間内に前後して発生する確率が高い事象の間には、相関関係または因果関係が存在する可能性が高いと考えられる。影響時間内に前後して発生する事象の発生確率を算出する方法を以下に説明する。
【００３９】
図１０に示すように、図１１に黒丸で示す９個の事象の集合は、集合外の事象とは影響時間以上の時間が離れている。したがって、これらの９個の事象は、集合外の事象の発生には影響を与えず、また集合外の事象の発生からの影響も受けないと推定できる。したがって、図１１に示す９個の事象の間の関係を総当たりで調べることにより、１０秒から２０秒の範囲のデータの解析を行える。このような、影響時間よりも短く、しかも集合外の事象とは影響時間以上の時間が離れている、すなわち隔離されている事象の集合を、以後の説明では完全隔離集合と呼ぶ。
【００４０】
因果関係または相関関係の存在し得る事象の組み合わせの数え方について、具体的に説明する。１１秒に発生しているＱの後、影響時間の範囲内では「Ｒ、Ｓ、Ｘ、Ｕ、Ｗ、Ｔ、Ｚ、Ｖ」の各イベントが発生している。したがって、サーバＣＰＵ２２は、図５に示す組み合わせ回数ＤＢ４３の第１事象がＱ、第２事象が「Ｒ、Ｓ、Ｘ、Ｕ、Ｗ、Ｔ、Ｚ、Ｖ」のフィールドに、各々１を加算する。同様に１２秒に発生しているＲの後、影響時間の範囲内では「Ｓ、Ｘ、Ｕ、Ｗ、Ｔ、Ｚ、Ｖ」の各イベントが発生している。したがって、サーバＣＰＵ２２は、図５に示す組み合わせ回数ＤＢ４３の第１事象がＲ、第２事象が「Ｓ、Ｘ、Ｕ、Ｗ、Ｔ、Ｚ、Ｖ」のフィールドに、各々１を加算する。このように、サーバＣＰＵ２２は、完全隔離集合内の事象から２個の事象を時系列に沿って順番に取り出す場合を総当たりで数えて組み合わせ回数ＤＢ４３に記録することを、全ての完全隔離集合について繰り返す。
【００４１】
次に、集合外の事象とは影響時間以上の時間が離れている、すなわち集合外の事象とは隔離されているが、集合内の最初の事象から最後の事象までの時間が影響時間よりも長い事象の集合の場合について説明する。このような集合を、以後の説明では準隔離集合と呼ぶ。図１２および図１３は、準隔離集合の例を示す。準隔離集合の場合にも、集合外の事象の発生には影響を与えず、また集合外の事象の発生からの影響も受けないと推定する。さらに、たとえば４９２秒に発生している事象Ｚと、５２６秒に発生している事象Ｙとの間は、影響時間である２０秒よりも長い時間離れているので、両者の間には因果関係も相関関係も無いと推定できる。
【００４２】
このような準隔離行列の場合に、組み合わせ回数ＤＢ４３に第１事象と第２事象との組み合わせの回数を記録する方法について説明する。まず、サーバＣＰＵ２２は、図１２に示すように１番目の事象から影響時間内の事象を抽出した窓ＤＢを作成する。作成した窓ＤＢの例を図９に示す。サーバＣＰＵ２２は、組み合わせ回数ＤＢ４３の第１事象が窓ＤＢ内の最初のレコードの事象であるＺ、第２事象が窓ＤＢ内の「Ｖ、Ｑ、Ｒ」のフィールドに、各々１を加算する。
【００４３】
その後、サーバＣＰＵ２２は、図１３に示すように２番目の事象から影響時間内の事象を抽出した窓ＤＢを作成する。サーバＣＰＵ２２は、組み合わせ回数ＤＢ４３の第１事象が窓ＤＢ内の最初のレコードの事象であるＵ、第２事象が窓ＤＢ内の「Ｑ、Ｒ、Ｙ」のフィールドに、各々１を加算する。このように窓ＤＢを作成する位置を時間軸上で順次ずらしていくことにより、サーバＣＰＵ２２は、準隔離集合内で因果関係または相関関係のある可能性のある組み合わせを組み合わせ回数ＤＢ４３に記録する。サーバＣＰＵ２２は、すべての準隔離行列について以上の操作を繰り返す。
【００４４】
以上の操作により、サーバＣＰＵ２２は、時系列ＤＢ４２に記録された事象のうち、影響時間内の事象の組み合わせを全て組み合わせ回数ＤＢ４３に記録することができる。
【００４５】
さらにサーバＣＰＵ２２は、時系列ＤＢ４２に記録された各事象の数を数え、発生数ＤＢ４４に記録する。図７に示す発生数ＤＢ４４は、時系列ＤＢ４２に記録されたＡの事象は２１３２回、Ｂの事象は５０２１回であることを示している。
【００４６】
サーバＣＰＵ２２は、組み合わせ回数ＤＢ４３の各レコードのＡフィールドに記録された値と、発生数ＤＢ４４のＡのレコードの発生回数フィールドに記録された値との比を求め、組み合わせ確率ＤＢ４５の対応するフィールドに記録する。Ｂフィールド以降も同様に比を求めることにより、サーバＣＰＵ２２は組み合わせ確率ＤＢ４５を作成する。組み合わせ確率ＤＢ４５には、第１事象が発生した場合に、影響時間内に第２事象が発生する確率が記録されている。
【００４７】
図１４は、プログラムの処理の流れを示すフローチャートである。図１４に示すプログラムは、時系列ＤＢ４２からレコードを取得して、影響時間内に２つの事象の組み合わせが発生する確率を算出するプログラムである。図１４を使用して、本実施の形態のプログラムの処理の流れを説明する。
【００４８】
サーバＣＰＵ２２は、組み合わせ回数ＤＢ４３および組み合わせ時刻ＤＢを初期化する（ステップＳ５０１）。すなわちサーバＣＰＵ２２は組み合わせ回数ＤＢ４３の各フィールドの値を初期値である０に設定する。さらに、サーバＣＰＵ２２は、組み合わせ時刻ＤＢのレコードを全て削除する。
【００４９】
サーバＣＰＵ２２は、時系列ＤＢ４２内の解析を開始する位置および終了する位置を取得する（ステップＳ５０２）。ここで、サーバＣＰＵ２２は解析を開始する位置および終了する位置を、被験者の状態を解析する医師等のユーザによる入力を通信部２５、ネットワーク１９、通信部３５を介して入力部３６から取得する。サーバ２２は、グループ取得のサブルーチンを起動する（ステップＳ５０３）。グループ取得のサブルーチンは、時系列ＤＢ４２内のデータから、一つ前および一つ後ろの事象との間の時間が影響時間以上離れた事象のグループを取得するサブルーチンである。グループ取得のサブルーチンの処理の流れは後述する。
【００５０】
サーバＣＰＵ２２は、取得したグループの最初のイベントと最後のイベントとの間の時間が影響時間以下であるか否かを判定する（ステップＳ５０４）。影響時間以下である場合は（ステップＳ５０４でＹＥＳ）、サーバＣＰＵ２２は完全隔離カウントのサブルーチンを起動する（ステップＳ５０５）。完全隔離カウントのサブルーチンは、完全隔離集合内のイベントの組み合わせを組み合わせ回数ＤＢ４３に記録するサブルーチンである。完全隔離カウントのサブルーチンの処理の流れは後述する。
【００５１】
影響時間より長い場合は（ステップＳ５０４でＮＯ）、サーバＣＰＵ２２は準隔離カウントのサブルーチンを起動する（ステップＳ５０６）。準隔離カウントのサブルーチンは、準隔離集合内のイベントの組み合わせを組み合わせ回数ＤＢ４３に記録するサブルーチンである。準隔離カウントのサブルーチンの処理の流れは後述する。
【００５２】
ステップＳ５０５またはステップＳ５０６の終了後、サーバＣＰＵ２２は時系列ＤＢ４２の解析を終了したか否かを判定する（ステップＳ５０７）。サーバＣＰＵ２２は、解析を終了する位置を、前述のとおりステップＳ５０２で取得する。終了していないと判定した場合は（ステップＳ５０７でＮＯ）、サーバＣＰＵ２２はステップＳ５０３に戻る。終了したと判定した場合は（ステップＳ５０７でＹＥＳ）、サーバＣＰＵ２２はステップＳ５０２で取得した開始時刻から終了時刻までの間の各事象の数を数えて発生数ＤＢ４４を作成する（ステップＳ５０８）。サーバＣＰＵ２２は、組み合わせ回数ＤＢ４３と発生数ＤＢ４４から第１事象が発生した場合に影響時間内に第２事象が発生する確率を算出して、組み合わせ確率ＤＢ４５に記録する（ステップＳ５０９）。サーバＣＰＵ２２は、以上の処理で作成した組み合わせ確率ＤＢ等を通信部２５、ネットワーク１９および通信部３５を介してクライアント３０の表示部３７に表示する（ステップＳ５１０）。表示の例については後述する。その後、サーバＣＰＵ２２は処理を終了する。
【００５３】
図１５は、グループ取得のサブルーチンの処理の流れを示すフローチャートである。グループ取得のサブルーチンは、時系列ＤＢ４２内のデータから、一つ前および一つ後ろの事象との間の時間が影響時間以上離れた事象のグループを取得するサブルーチンである。
【００５４】
サーバＣＰＵ２２は、カウンタＩを開始位置に設定する（ステップＳ５２１）。ここで開始位置は、時系列ＤＢ４２中の本サブルーチンによる処理を開始する最初のレコードを示す番号である。初めて本サブルーチンを実行する場合には、開始位置はユーザによる入力を受け付けた解析を開始する時間に対応する時系列ＤＢ４２内のレコードの番号である。２回目以降に本サブルーチンを実行する場合には、開始位置は前回の本サブルーチンの実行終了時に補助記憶装置２４に記録した値である。
【００５５】
サーバＣＰＵ２２は、時系列ＤＢ４２からＩ番目のレコードを取得する（ステップＳ５２２）。サーバＣＰＵ２２は、時系列ＤＢ４２からＩ＋１番目のレコードを取得する（ステップＳ５２３）。サーバＣＰＵ２２は、Ｉ＋１番目のレコードとＩ番目のレコードとの時間差が影響時間より大きいか否かを判定する（ステップＳ５２４）。時間差が影響時間以下であると判定した場合には（ステップＳ５２４でＮＯ）、サーバＣＰＵ２２はカウンタＩに１を加算する（ステップＳ５２５）。その後、サーバＣＰＵ２２はステップＳ５２３に戻る。
【００５６】
時間差が影響時間より大きいと判定した場合は（ステップＳ５２４でＹＥＳ）、サーバＣＰＵ２２はステップＳ５２１で使用した開始位置に対応するレコードからＩ番目のレコードまでを１つのグループに定める（ステップＳ５２６）。サーバＣＰＵ２２は、補助記憶装置２４に、開始位置がＩ＋１である旨を記録する（ステップＳ５２７）。サーバＣＰＵ２２は、その後処理を終了する。
【００５７】
図１６は、完全隔離カウントのサブルーチンの処理の流れを示すフローチャートである。完全隔離カウントのサブルーチンは、完全隔離集合内のイベントの組み合わせを組み合わせ回数ＤＢ４３に記録するサブルーチンである。
【００５８】
サーバＣＰＵ２２は、カウンタＪを初期値１に設定する（ステップＳ５４１）。サーバＣＰＵ２２は、グループ内のＪ番目の事象を第１事象に設定する（ステップＳ５４２）。サーバＣＰＵ２２はカウンタＫをＪ＋１に設定する（ステップＳ５４３）。サーバＣＰＵ２２は、グループ内のＫ番目の事象を第２事象に設定する（ステップＳ５４４）。サーバＣＰＵ２２は、組み合わせ回数ＤＢ４３の対応するフィールド、すなわち第２事象のレコードの第１事象のフィールドに１を加算する（ステップＳ５４５）。サーバＣＰＵ２２は、組み合わせ時刻ＤＢに第１事象、第２事象および第２事象に関連付けられた時刻を記録したレコードを追加する（ステップＳ５４６）。
【００５９】
サーバＣＰＵ２２は、第２事象が終了したか否かを判定する（ステップＳ５４７）。ここで、グループ内の最後の事象が第２事象である場合に、サーバＣＰＵ２２は第２事象が終了したと判定する。第２事象が終了していないと判定した場合は（ステップＳ５４７でＮＯ）、サーバＣＰＵ２２はカウンタＫに１を加算する（ステップＳ５４８）。その後、サーバＣＰＵ２２はステップＳ５４４に戻る。
【００６０】
第２事象が終了したと判定した場合は（ステップＳ５４７でＹＥＳ）、サーバＣＰＵ２２は第１事象が終了したか否かを判定する（ステップＳ５４９）。ここで、グループ内の最後から二番目の事象が第１事象である場合に、サーバＣＰＵ２２は第１事象が終了したと判定する。第１事象が終了していないと判定した場合は（ステップＳ５４９でＮＯ）、サーバＣＰＵ２２はカウンタＪに１を加算する（ステップＳ５５０）。その後、サーバＣＰＵ２２はステップＳ５４２に戻る。第１事象が終了したと判定した場合は（ステップＳ５４９でＹＥＳ）、サーバＣＰＵ２２は処理を終了する。
【００６１】
図１７は、準隔離カウントのサブルーチンの処理の流れを示すフローチャートである。準隔離カウントのサブルーチンは、準隔離集合内のイベントの組み合わせを組み合わせ回数ＤＢ４３に記録するサブルーチンである。
【００６２】
サーバＣＰＵ２２は、カウンタＪを初期値１に設定する（ステップＳ５６１）。サーバＣＰＵ２２は、窓ＤＢを作成するサブルーチンを起動する（ステップＳ５６２）。窓ＤＢを作成するサブルーチンは、時系列ＤＢ４２から時刻フィールドに記録された時間が影響時間の範囲内であるレコードを取り出して窓ＤＢを作成するサブルーチンである。窓ＤＢを作成するサブルーチンの処理の流れは後述する。
【００６３】
サーバＣＰＵ２２は、カウンタＫをＪと同じ値に設定する（ステップＳ５６３）。サーバＣＰＵ２２は、グループ内のＪ番目の事象を第１事象に設定する（ステップＳ５６４）。サーバＣＰＵ２２はカウンタＫをＫ＋１に設定する（ステップＳ５６５）。サーバＣＰＵ２２は、第２事象が終了したか否かを判定する（ステップＳ５６６）。ここで、ステップＫ番目の事象が、窓ＤＢ内に存在しない場合に、サーバＣＰＵ２２は第２事象が終了したと判定する。
【００６４】
第２事象が終了していないと判定した場合は（ステップＳ５６６でＮＯ）、サーバＣＰＵ２２は、窓ＤＢ内のＫ番目の事象を第２事象に設定する（ステップＳ５６７）。サーバＣＰＵ２２は、組み合わせ回数ＤＢ４３の対応するフィールド、すなわち第２事象のレコードの第１事象のフィールドに１を加算する（ステップＳ５６８）。サーバＣＰＵ２２は、組み合わせ時刻ＤＢに第１事象、第２事象および第２事象に関連付けられた時刻を記録したレコードを追加する（ステップＳ５６９）。その後サーバＣＰＵ２２は、ステップＳ５６５に戻る。
【００６５】
第２事象が終了したと判定した場合は（ステップＳ５６６でＹＥＳ）、サーバＣＰＵ２２は第１事象が終了したか否かを判定する（ステップＳ５７０）。ここで、グループ内の最後から二番目の事象が第１事象である場合に、サーバＣＰＵ２２は第１事象が終了したと判定する。第１事象が終了していないと判定した場合は（ステップＳ５７０でＮＯ）、サーバＣＰＵ２２はカウンタＪに１を加算する（ステップＳ５７１）。その後、サーバＣＰＵ２２はステップＳ５６２に戻る。第１事象が終了したと判定した場合は（ステップＳ５７０でＹＥＳ）、サーバＣＰＵ２２は処理を終了する。
【００６６】
図１８および図１９は、窓ＤＢを作成するサブルーチンの処理の流れを示すフローチャートである。窓ＤＢを作成するサブルーチンは、時系列ＤＢ４２から時刻フィールドに記録された時間が影響時間の範囲内であるレコードを取り出して窓ＤＢを作成するサブルーチンである。
【００６７】
サーバＣＰＵ２２は、サブルーチンの実行が初回であるか否かを判定する（ステップＳ６０１）。初回である場合には（ステップＳ６０１でＹＥＳ）、サーバＣＰＵ２２は窓ＤＢのレコードを全て削除することにより、窓ＤＢを初期化する（ステップＳ６０２）。サーバＣＰＵ２２はカウンタＭを１に設定する（ステップＳ６０３）。サーバＣＰＵ２２は、時系列ＤＢ４２のＪ番目のレコードを窓ＤＢに複写する（ステップＳ６０４）。ここでカウンタＪは呼び出し元のサブルーチンで設定した窓ＤＢの作成を開始するレコードの番号である。
【００６８】
サーバＣＰＵ２２は、時系列ＤＢ４２からＪ＋Ｍ番目のレコードの時刻フィールドに記録された時刻を取得する（ステップＳ６０５）。サーバＣＰＵ２２は、Ｊ番目のレコードとＪ＋Ｍ番目のレコードとの間の時間が影響時間以下であるか否かを判定する（ステップＳ６０６）。影響時間以下であると判定した場合は（ステップＳ６０６でＹＥＳ）、サーバＣＰＵ２２は時系列ＤＢ４２のＪ＋Ｍ番目のレコードを窓ＤＢに複写する（ステップＳ６０７）。サーバＣＰＵ２２は、カウンタＭに１を加算する（ステップＳ６０８）。サーバＣＰＵ２２はステップＳ６０５に戻る。影響時間を超えると判定した場合は（ステップＳ６０６でＮＯ）、サーバＣＰＵ２２は処理を終了する。
【００６９】
サブルーチンの実行が２回目以降である場合は（ステップＳ６０１でＮＯ）、サーバＣＰＵ２２は窓ＤＢから１番目のレコードを削除する（ステップＳ６１１）。サーバＣＰＵ２２は、２番目のレコードを１番目に、３番目のレコードを２番目にと、レコードを１つづつずらす（ステップＳ６１２）。ずらす操作は、補助記憶装置２４または主記憶装置２３内のデータを記憶するメモリのアドレスの変更により行なう。
【００７０】
サーバＣＰＵ２２は、カウンタＭを窓ＤＢ内のレコード数に設定する（ステップＳ６１３）。サーバＣＰＵ２２は、カウンタＭに１を加算する（ステップＳ６１４）。サーバＣＰＵ２２は、時系列ＤＢ４２からＪ＋Ｍ番目のレコードの時刻フィールドに記録された時刻を取得する（ステップＳ６１５）。サーバＣＰＵ２２は、Ｊ番目のレコードとＪ＋Ｍ番目のレコードとの間の時間が影響時間以下であるか否かを判定する（ステップＳ６１６）。影響時間以下であると判定した場合は（ステップＳ６１６でＹＥＳ）、サーバＣＰＵ２２は時系列ＤＢ４２のＪ＋Ｍ番目のレコードを窓ＤＢに複写する（ステップＳ６１７）。サーバＣＰＵ２２はステップＳ６１４に戻る。影響時間を超えると判定した場合は（ステップＳ６１６でＮＯ）、サーバＣＰＵ２２は処理を終了する。
【００７１】
図２０から図２２は、情報処理結果を表示する画面を示す説明図である。図２０から図２２は、入力部３６から受け付けたユーザによる操作に応じて、組み合わせ確率ＤＢ４５または組み合わせ時刻ＤＢに記録された情報をクライアント３０の表示部３７に表示する画面の例である。なお、組み合わせ確率ＤＢ４５または組み合わせ時刻ＤＢからのデータの抽出およびグラフの生成の手順については、既存の様々な手法を使用できるので説明を省略する。
【００７２】
図２０は、組み合わせ確率ＤＢ４５から上位の項目を抽出して表示する画面の例である。画面には、リスト欄５１、分析期間欄５２、ＩＤ（IDentification）欄５３およびデータ欄５５が表示されている。リスト欄５１には、事象ＤＢ４１に記録されているレコードの内容が表示されている。なお、表示ＤＢ４１に記録されているレコードを全て表示部３７に表示しきれない場合には、後述するデータ欄５５に表示されている情報に対応するレコードを抽出してリスト欄５１に表示することが望ましい。
【００７３】
分析期間欄５２は、時系列ＤＢ４２から取り出して解析するデータの範囲の入力を受け付ける欄である。クライアントＣＰＵ３２は、入力部３６を介して分析期間欄５２の入力を受け付け、通信部３５、ネットワーク１９および通信部２５を介してサーバＣＰＵ２２に伝達する。
【００７４】
ＩＤ欄５３は、データを解析する被験者に固有のＩＤの入力を受け付ける欄である。補助記憶装置２４に複数の被験者のデータが記録されている場合には、ＩＤによりどの被験者のデータであるかを区別する。ＩＤは、各ＤＢのファイル名または各ＤＢに設けられたＩＤを記録するフィールドに記録されている。クライアントＣＰＵ３２は、入力部３６を介してＩＤ欄５３の入力を受け付け、通信部３５、ネットワーク１９および通信部２５を介してサーバＣＰＵ２２に伝達する。なお、本実施の形態の情報処理システム１０で特定の被験者のデータのみを取り扱う場合には、ＩＤ欄５３を省略することができる。
【００７５】
データ欄５５は、組み合わせ確率ＤＢ４５中の各フィールドの値が上位のデータの第１事象と第２事象との組み合わせを可視化したグラフである。データ欄５５の横軸は第１事象が発生した際に第２事象が発生した確率を示す。データ欄５５の縦軸は、第１事象と第２事象の組み合わせを示す。たとえば、Ａ→Ｂという記載は、第１事象Ａが発生した場合に、影響時間内に第２事象Ｂが発生した確率を意味している。図２０の画面により、ユーザはどの事象の組み合わせの発生確率が高いかを容易に認識することができる。
【００７６】
図２１は、図２０のリスト欄５１中のＡの事象の選択を受け付けた場合の画面を示す。図２１は、組み合わせ確率ＤＢ４５から所定の事象に関連する上位の項目を抽出して表示する画面の例である。データ欄５５は、組み合わせ確率ＤＢ４５から第１事象または第２事象がＡであるフィールドの値が降順で表示されている。データ欄５５の横軸は第１事象が発生した際に第２事象が発生した確率を示す。データ欄５５の縦軸は、第１事象と第２事象の組み合わせを示す。図２１の画面により、ユーザは特定の事象と組み合わさって発生する確率が高い事象を容易に認識することができる。
【００７７】
図２２は、リスト欄５１中のＡの事象およびＧの事象の選択を順番に受け付けた場合の画面を示す。図２２は、組み合わせ時刻ＤＢに記録されたレコードから、所定の第１事象と第２事象の組み合わせのレコードを抽出して、発生時刻の時系列を可視化したグラフである。データ欄５５には、第１事象がＡ、第２事象がＧである組み合わせが発生した時刻が表示されている。データ欄５５の横軸は、時刻を示す。データ欄５５の縦軸は、指定された順番の事象の発生の有無を示す。図２２の画面により、ユーザは特定の事象の組み合わせがいつ発生しているかを容易に認識することができる。
【００７８】
図２３は、比較例のプログラムの処理の流れを示すフローチャートである。図２４および図２５は、計算時間短縮の効果を示す説明図である。図２３から図２５を使用して、本実施の形態による計算時間短縮の効果について説明する。
【００７９】
図２３は、時系列ＤＢ４２に記録されたレコードを完全隔離集合および不完全隔離集合に分けずに最初のレコードから順次処理する、比較例の処理の流れを示すフローチャートである。図２３を使用して、比較例の処理の流れを説明する。
【００８０】
サーバＣＰＵ２２は、組み合わせ回数ＤＢ４３および組み合わせ時刻ＤＢを初期化する（ステップＳ６４１）。すなわち組み合わせ回数ＤＢ４３の各フィールドの値を初期値である０に設定する。また、組み合わせ時刻ＤＢのレコードを全て削除する。サーバＣＰＵ２２は、時系列ＤＢ４２内の解析を開始する位置および終了する位置を取得する（ステップＳ６４２）。ここで、解析を開始する位置および終了する位置は、被験者の状態を解析する医師等のユーザによる入力を通信部２５、ネットワーク１９、通信部３５を介して入力部３６から取得する。
【００８１】
サーバＣＰＵ２２は準隔離カウントのサブルーチンを起動する（ステップＳ６４３）。準隔離カウントのサブルーチンは、準隔離集合内のイベントの組み合わせを組み合わせ回数ＤＢ４３に記録するサブルーチンである。準隔離カウントのサブルーチンは、図１７を使用して説明したサブルーチンと同一のサブルーチンを使用する。ここで、準隔離カウントのサブルーチンは、ステップＳ６３２で取得した開始位置から終了位置までの時系列ＤＢ４２のレコードを全て処理する。
【００８２】
サーバＣＰＵ２２はステップＳ６４２で取得した開始時刻から終了時刻までの間の各事象の数を数えて発生数ＤＢ４４を作成する（ステップＳ６４４）。サーバＣＰＵ２２は、組み合わせ回数ＤＢ４３と発生数ＤＢ４４から第１事象が発生した場合に第２事象が発生する確率を算出して、組み合わせ確率ＤＢ４５に記録する（ステップＳ６４５）。サーバＣＰＵ２２は、以上の処理で作成した組み合わせ確率ＤＢ等を通信部２５、ネットワーク１９および通信部３５を介してクライアント３０の表示部３７に表示する（ステップＳ６４６）。表示の例は、たとえば図２０から図２２に示す画面である。
【００８３】
図２４は、図１４に示す本実施の形態のフローチャートを使用した場合と、図２３に示す比較例のフローチャートを使用した場合との計算時間の差を示すグラフである。図２４の横軸は、時系列ＤＢ４２に含まれるレコードの数、すなわち処理する事象の数であり、単位は個である。図２４の縦軸は、図２４または図１４のフローチャートを実行する場合にサーバＣＰＵ２２が要する計算時間であり、単位は秒である。事象ＤＢ４１に記録された事象の数は２０個、事象の発生状態は、図１０に示すようにすべての事象を完全隔離集合に分けることができる場合を例にして計算している。
【００８４】
実線は、図１４に示す本実施の形態の処理を行った場合の処理時間、破線は図２４に示す比較例の処理を行った場合の処理時間を示す。本実施の形態の処理時間は、比較例の処理時間に比べて半分以下になっている。
【００８５】
図２５は、図１４に示す本実施の形態のフローチャートを使用した場合と、図２３に示す比較例のフローチャートを使用した場合との計算時間の差を示すグラフである。図２５の横軸は、事象ＤＢ４１に含まれるレコードの数、すなわち処理する事象の種類の数であり、単位は個である。図２５の縦軸は、図２４または図１４のフローチャートを実行する場合にサーバＣＰＵ２２が要する計算時間であり、単位は秒である。時系列ＤＢ４２に記録された事象の数は１０万個、事象の発生状態は、図１０に示すようにすべての事象を完全隔離集合に分けることができる場合を例にして計算している。
【００８６】
実線は、図１４に示す本実施の形態の処理を行った場合の処理時間、破線は図２４に示す比較例の処理を行った場合の処理時間を示す。本実施の形態では、事象の種類が６０個程度の場合には、本実施の形態の処理時間は比較例の処理時間の半分程度、事象の趣里が２００個程度の場合には、本実施の形態の処理時間は比較例の処理時間の６割程度になっている。
【００８７】
図２４および図２５より、本実施の形態では時系列ＤＢ４２に記録された事象を影響時間以上離れたグループに分割してから処理することにより、計算時間を大幅に短縮できることがわかる。
【００８８】
計算時間を短縮できる理由について説明する。比較例では、時系列ＤＢ４２中の処理範囲のレコード全体を一つの準隔離集合として取扱い、窓ＤＢを使用して影響時間内の事象の組み合わせを抽出している。窓ＤＢを更新する際には、図１９のステップＳ６１２に示すように、窓ＤＢ内のレコードを１つずつずらす操作を行う。これは、主記憶装置２３または補助記憶装置２４に記憶されたデータの記録位置を変更していく操作であるので、時間を要する。
【００８９】
一方、本実施の形態では時系列ＤＢ４２中の処理範囲のレコードを完全隔離集合および不完全隔離集合に分割する。完全隔離集合の場合は、窓ＤＢを使用する処理が発生しないため、計算時間が短くなる。また、不完全隔離集合の場合も、集合間をまたぐ処理が不要な分、窓ＤＢをずらす操作が少なくなるので、計算時間が短くなる。
【００９０】
本実施の形態によると、多数の事象の発生時刻を記録した時系列データから、関連する事象の組み合わせを効率良く抽出するプログラム等を提供することができる。
【００９１】
図２２に示す事象の組み合わせの発生時刻の表示を行わない場合には、組み合わせ時刻ＤＢの作成を省略することができる。
【００９２】
組み合わせ回数ＤＢ４３および組み合わせ確率ＤＢ４５に第３事象以降のフィールドを設けることにより、３つ以上の事象の組み合わせの発生確率を抽出することができる。
【００９３】
解析対象は、一人の被験者の行動に限定しない。たとえば店舗内での複数の消費者の行動を時系列ＤＢ４２に記録して、本実施の形態の手法により行動の組み合わせを解析することができる。また、解析対象は実世界における被験者の行動に限定しない。たとえばウェブブラウジング、インターネットショッピング等のネットワーク上における被験者の行動を時系列ＤＢ４２に記録して、本実施の形態の手法を使用して行動の組み合わせを解析することができる。
【００９４】
組み合わせ確率ＤＢ４５をクライアント３０の補助記憶装置３４に複写して、たとえばクライアント３０にインストールされた表計算ソフトウェア等の汎用のソフトウェアを使用してグラフ等による可視化を行うようにしても良い。この場合、図１４を用いて説明したプログラムの処理中のステップＳ５１０のデータの表示を省略することができる。
【００９５】
ステップＳ５０９において、サーバＣＰＵ２２は、第２事象が発生した場合に第１事象が発生していた確率を算出して、組み合わせ確率ＤＢ４５に記録しても良い。また、第１事象を基準として算出した場合と、第２事象を基準として算出した場合の二つの組み合わせ確率ＤＢ４５を作成しても良い。この場合には、どちらの組み合わせ確率ＤＢ４５を使用したデータを表示するかについて、ユーザからの入力を受け付けることが望ましい。
【００９６】
［実施の形態２］
本実施の形態は、時系列ＤＢ４２に事象を記録する際にグループ分けを行う情報処理装置等に関する。実施の形態１と共通する部分については、説明を省略する。
【００９７】
図２６は、実施の形態２の時系列ＤＢ４２のレコードレイアウトを示す説明図である。本実施の形態の時系列ＤＢ４２は、発生した事象を示す記号と、その事象に関連する時刻とグループの番号とを関連づけるＤＢである。時系列ＤＢ４２は、時刻フィールド、事象フィールド、時間差フィールドおよびグループフィールドを備える。時刻フィールドには、日時を示す数値が記録されている。
【００９８】
事象フィールドには、時刻フィールドに記録された時刻に発生した被験者の状態の変化を示す記号が記録されている。時間差フィールドには、次のイベントとの間の時間差が記録されている。グループフィールドには、レコードの属するグループの番号が記録されている。時系列ＤＢ４２は、事象に対応する１つの時刻について１つのレコードを有する。時系列ＤＢ４２のレコードは、時刻フィールドの昇順に配列されている。
【００９９】
図２７は、実施の形態２のプログラムの処理の流れを示すフローチャートである。図２７は、サーバＣＰＵ２２が時系列ＤＢ４２にデータを記録する際に実行するプログラムの処理の流れを示す。
【０１００】
サーバＣＰＵ２２は、カウンタＩおよびカウンタＪを初期値１にする（ステップＳ７０１）。ここで、カウンタＩは事象および時刻の取得順序を記録するカウンタである。また、カウンタＪはグループの番号を記録するカウンタである。
【０１０１】
サーバＣＰＵ２２は、ネットワーク１９を介してセンサ制御装置１２、生体センサ１６等から事象と時刻とを取得する（ステップＳ７０２）。サーバＣＰＵ２２はカウンタＩに１を加算する（ステップＳ７０３）。サーバＣＰＵ２２は、ネットワーク１９を介してセンサ制御装置１２、生体センサ１６等から次の事象と時刻とを取得する（ステップＳ７０４）。サーバＣＰＵ２２は、ステップＳ７０２で取得した時刻とステップＳ７０４で取得した時刻との時間差を算出する（ステップＳ７０５）。
【０１０２】
サーバＣＰＵ２２は、時系列ＤＢ４２にＩ−１番目に取得した時刻、Ｉ−１番目に取得した事象、ステップＳ７０５で算出した時間差およびカウンタＪを記載したレコードを時系列ＤＢ４２に作成して記録する（ステップＳ７０６）。サーバＣＰＵ２２は、ステップＳ７０５で算出した時間差が影響時間より大きいか否かを判定する（ステップＳ７０７）。時間差が影響時間より大きいと判定した場合は（ステップＳ７０７でＹＥＳ）、サーバＣＰＵ２２はカウンタＪに１を加算する（ステップＳ７０８）。時間差が影響時間以下であると判定した場合（ステップＳ７０７でＮＯ）およびステップＳ７０８の終了後、サーバＣＰＵ２２は処理が終了したか否かを判定する（ステップＳ７０９）。ここで、サーバＣＰＵ２２が処理が終了したと判定するのは、ネットワーク１９を介して事象の入力が終了した旨の指示を取得した場合である。
【０１０３】
処理が終了していないと判定した場合（ステップＳ７０９でＮＯ）、サーバＣＰＵ２２はステップＳ７０３に戻る。処理が終了したと判定した場合（ステップＳ７０９でＹＥＳ）、サーバＣＰＵ２２はＩ番目に取得した時刻、Ｉ番目に取得した事象、ステップＳ７０５で算出した時間差およびカウンタＪを記載したレコードを時系列ＤＢ４２に作成して記録する（ステップＳ７１０）。サーバＣＰＵ２２は、その後処理を終了する。
【０１０４】
図２８は、実施の形態２のプログラムの処理の流れを示すフローチャートである。図２８に示すプログラムは、図２６に示す時系列ＤＢ４２からレコードを取得して、影響時間内に２つの事象の組み合わせが発生する確率を算出するプログラムである。図２８を使用して、本実施の形態の処理の流れを説明する。
【０１０５】
サーバＣＰＵ２２は、組み合わせ回数ＤＢ４３および組み合わせ時刻ＤＢを初期化する（ステップＳ７２１）。すなわちサーバＣＰＵ２２は組み合わせ回数ＤＢ４３の各フィールドの値を初期値である０に設定する。さらに、サーバＣＰＵ２２は、組み合わせ時刻ＤＢのレコードを全て削除する。
【０１０６】
サーバＣＰＵ２２は、時系列ＤＢ４２内の解析を開始する位置および終了する位置を取得する（ステップＳ７２２）。ここで、サーバＣＰＵ２２は解析を開始する位置および終了する位置を、被験者の状態を解析する医師等のユーザによる入力を通信部２５、ネットワーク１９、通信部３５を介して入力部３６から取得する。サーバ２２は、時系列ＤＢ４２のグループフィールドを参照して１グループ分のデータを取得する（ステップＳ７２３）。ここで、１グループ分とは、グループフィールドが同一の値が記録されているレコードを意味する。
【０１０７】
サーバＣＰＵ２２は、取得したグループの最初のイベントと最後のイベントとの間の時間が影響時間以下であるか否かを判定する（ステップＳ７２４）。影響時間以下である場合は（ステップＳ７２４でＹＥＳ）、サーバＣＰＵ２２は完全隔離カウントのサブルーチンを起動する（ステップＳ７２５）。完全隔離カウントのサブルーチンは、完全隔離集合内のイベントの組み合わせを組み合わせ回数ＤＢ４３に記録するサブルーチンである。本実施の形態においては、完全隔離カウントのサブルーチンは図１６を使用して説明したサブルーチンを使用する。
【０１０８】
影響時間より長い場合は（ステップＳ７２４でＮＯ）、サーバＣＰＵ２２は準隔離カウントのサブルーチンを起動する（ステップＳ７２６）。準隔離カウントのサブルーチンは、準隔離集合内のイベントの組み合わせを組み合わせ回数ＤＢ４３に記録するサブルーチンである。本実施の形態においては、準完全隔離カウントのサブルーチンは図１７を使用して説明したサブルーチンを使用する。
【０１０９】
ステップＳ７２５またはステップＳ７２６の終了後、サーバＣＰＵ２２は時系列ＤＢ４２の解析を終了したか否かを判定する（ステップＳ７２７）。サーバＣＰＵ２２は、解析を終了する位置を、前述のとおりステップＳ７２２で取得する。終了していないと判定した場合は（ステップＳ７２７でＮＯ）、サーバＣＰＵ２２はステップＳ７２３に戻る。終了したと判定した場合は（ステップＳ７２７でＹＥＳ）、サーバＣＰＵ２２はステップＳ７２２で取得した開始時刻から終了時刻までの間の各事象の数を数えて発生数ＤＢ４４を作成する（ステップＳ７２８）。サーバＣＰＵ２２は、組み合わせ回数ＤＢ４３と発生数ＤＢ４４から第１事象が発生した場合に第２事象が発生する確率を算出して、組み合わせ確率ＤＢ４５に記録する（ステップＳ７２９）。サーバＣＰＵ２２は、以上の処理で作成した組み合わせ確率ＤＢ４５等を通信部２５、ネットワーク１９および通信部３５を介してクライアント３０の表示部３７に表示する（ステップＳ７３０）。表示の例は前述の図２０から図２２である。その後、サーバＣＰＵ２２は処理を終了する。
【０１１０】
本実施の形態によると、時系列ＤＢ４２に情報を記録する際に、影響時間以上離れた事象のグループに分けるので、その後医師等がデータを解析する際のサーバＣＰＵ２２の動作を高速にする事ができる。
【０１１１】
［実施の形態３］
本実施の形態は、一部の事象を無視することにより準隔離集合を完全隔離集合に分けて処理する情報処理装置等に関する。実施の形態１と共通する部分については、説明を省略する。
【０１１２】
図２９および図３０は、実施の形態３の事象の発生状態の例を示す説明図である。図２９および図３０の横軸は時間である。図２９および図３０の縦軸は発生した事象の記号を示す。黒丸は、横軸で示す時刻に、縦軸で示す事象が発生したことを示す。図２９および図３０を使用して、本実施の形態の概要を説明する。
【０１１３】
図２９は、一つの準隔離集合の事象の発生状態を示す。図２９に示す事象は、隣接する事象との間は影響時間である２０秒以下である。また、図２９の左端の事象とその前の事象との間は、影響時間よりも離れている。同様に、図２９の右端の事象とその後の事象との間も、影響時間よりも離れている。
【０１１４】
１個の事象を無視した場合に、その事象の前の事象とその事象の後の事象との間の間隔が影響時間よりも長くなるように準隔離集合を分けた状態を、図２９の破線の矩形枠で示す。５番目のＵの事象および１５番目のＸの事象を無視した場合に、準隔離集合を影響時間よりも離れた３個のグループに分けることができる。３個のグループのうち、右端および左端のグループは、影響時間よりも短いグループになっている。一方、中央のグループは、影響時間よりも長いグループになっている。以後の説明では、無視する事象を境界事象と呼ぶ。
【０１１５】
図３０は、図２９に破線で示した中央のグループをさらに二つに分けた状態を示す。図３０は、連続する２個の事象を境界事象にした場合に、影響時間よりも間隔が空くようにグループを分けている。分けたグループを、図３０の破線の長円枠で示す。
【０１１６】
以上のようにして、図２９および図３０に示す準隔離集合を、４個の完全隔離集合と４個の境界事象とに分割することができる。仮に、連続する２個の事象を境界事象にした場合でも影響時間よりも長いグループができた場合には、その部分のみ連続する３個の事象を境界事象にして境界事象の数を増やしていくことにより、最終的には準隔離集合に含まれる全ての事象を完全隔離集合と境界事象に分けることができる。この分割の操作に使用するＤＢについて、以下に説明する。
【０１１７】
図３１は、実施の形態３のグループＤＢのレコードレイアウトを示す説明図である。グループＤＢは、準隔離集合を完全隔離集合と境界事象とに分割する際に使用するＤＢである。グループＤＢは、時刻フィールド、事象フィールド、第２時間差フィールドおよびフラグフィールドを有する。
【０１１８】
時刻フィールドには、日時を示す数値が記録されている。事象フィールドには、時刻フィールドに記録された時刻に発生した被験者の状態の変化を示す記号が記録されている。第２時間差フィールドには、２つ後の事象との間の時間差が記録されている。フラグフィールドには、境界事象であることを示すフラグが記録されている。グループＤＢは、事象に対応する１つの時刻について１つのレコードを有する。グループＤＢは、サーバＣＰＵ２２が必要に応じて補助記憶装置２４または主記憶装置２３に一時的に作成するＤＢである。
【０１１９】
サーバＣＰＵ２２は、時系列ＤＢ４２中の本実施の形態の処理を行う準隔離集合に対応する部分を時刻フィールドおよび事象フィールドに複写する。なお、時系列ＤＢ４２と同様にグループＤＢも時刻フィールドのデータの昇順で記録されている。
【０１２０】
サーバＣＰＵ２２は、第２時間差フィールドに、時刻フィールドに記録された値と二レコード後のレコードの時刻フィールドに記録された値との差を記録する。たとえば、図３１の一番上に示すレコードの場合、時刻フィールドには７１２が記録されている。二レコード後、すなわち三番目に示すレコードの時刻フィールドには、７２０が記録されている。したがって、サーバＣＰＵ２２は、一番上に示すレコードの第２時間差フィールドには７２０と７１２との差分である８を記録する。グループＤＢの最後の２つのレコードは、グループＤＢ内に二レコード後のレコードが存在しないため、空欄である。
【０１２１】
図３１のグループＤＢの第２時間差フィールドには、影響時間である２０秒を超える値が楕円で示す２か所に記録されている。サーバＣＰＵ２２は、第２時間差フィールドに影響時間を超える値が記録されているレコードの次のレコードのフラグフィールドに、境界事象を示す「境界」と記録する。
【０１２２】
図３２は、実施の形態３のグループＤＢのレコードレイアウトを示す説明図である。図３２に示すグループＤＢは、図３１に示すグループＤＢに第３時間差フィールドが追加されたＤＢである。
【０１２３】
サーバＣＰＵ２２は、各境界事象で区切られたグループの最初のレコードの時刻フィールドと最後のレコードの時刻フィールドに記録された値の差が影響時間を超える部分、すなわち中央のグループに含まれるレコードのみを処理の対象とする。サーバＣＰＵ２２は、処理の対象のレコードの第３時間差フィールドに、三レコード後のレコードとの時刻フィールドに記録された値の差を記録する。たとえば、図３２中の時刻フィールドが７４６のレコードの場合、三レコード後の時刻フィールドには、７５５が記録されている。したがって、サーバＣＰＵ２２は、時刻フィールドが７４６であるレコードの第３時間差フィールドには７５５と７４６との差分である９を記録する。処理の対象中の最後の３つのレコードは、処理の対象内に三レコード後のレコードが存在しないため、空欄である。
【０１２４】
図３２のグループＤＢの第３時間差フィールドには、影響時間である２０秒を超える値が楕円で示す１か所に記録されている。サーバＣＰＵ２２は、第３時間差フィールドに影響時間を超える値が記録されているレコードの次のレコードから連続する２つのレコードのフラグフィールドに、境界事象を示す「境界」と記録する。
【０１２５】
なお、グループＤＢには、最初から第３時間差フィールド以降の時間差フィールドを設けても良い。このようにすることにより、処理の途中でＤＢにフィールドを追加する必要がなくなる。
【０１２６】
図３３および図３４は、実施の形態３のプログラムの処理の流れを示すフローチャートである。図３３および図３４を使用して本実施の形態のプログラムの処理の流れを説明する。ステップＳ５０１からステップＳ５０５までおよびステップＳ５０７からステップＳ５１０までについては、図１４を使用して説明した実施の形態１のフローチャートと同一であるので、説明を省略する。
【０１２７】
取得したグループの最初のイベントと最後のイベントとの間の時間が影響時間を超える場合は（ステップＳ５０４でＮＯ）、サーバＣＰＵ２２はグループ分割のサブルーチンを起動する（ステップＳ７４１）。グループ分割のサブルーチンは、図２９から図３１までを使用して説明したように、ステップＳ５０３で取得したグループを、境界事象を定めて分割するサブルーチンである。グループ分割のサブルーチンの処理の流れは後述する。
【０１２８】
サーバＣＰＵ２２は、完全隔離カウントのサブルーチンを起動する（ステップＳ７４２）。完全隔離カウントのサブルーチンは、完全隔離集合内のイベントの組み合わせを組み合わせ回数ＤＢ４３に記録するサブルーチンである。本実施の形態においては、完全隔離カウントのサブルーチンは図１６を使用して説明したサブルーチンを使用する。
【０１２９】
サーバＣＰＵ２２は、ステップＳ５０３で取得したグループの末尾まで処理したか否かを判定する（ステップＳ７４３）。グループの末尾まで処理していないと判定した場合は（ステップＳ７４３でＮＯ）、サーバＣＰＵ２２はステップＳ７４２に戻る。グループの末尾まで処理したと判定した場合は（ステップＳ７４３でＹＥＳ）、サーバＣＰＵ２２はカウンタＭを初期値１に設定する（ステップＳ７４４）。
【０１３０】
サーバＣＰＵ２２は、境界フラグの前後をカウントするサブルーチンを起動する（ステップＳ７４５）。境界フラグの前後をカウントするサブルーチンは、Ｍ番目の境界事象とその前後の影響時間の範囲内の事象との組み合わせを組み合わせ回数ＤＢ４３に記録するサブルーチンである。境界フラグの前後をカウントするサブルーチンの処理の流れは後述する。
【０１３１】
サーバＣＰＵ２２は、ステップＳ５０３で取得したグループの末尾の境界事象まで処理したか否かを判定する（ステップＳ７４６）。処理していないと判定した場合は（ステップＳ７４６でＮＯ）、サーバＣＰＵ２２はカウンタＭに１を加算する（ステップＳ７４７）。サーバＣＰＵ２２はステップＳ７４５に戻る。処理したと判定した場合は（ステップＳ７４６でＹＥＳ）、サーバＣＰＵ２２はステップＳ５０７に進む。
【０１３２】
図３５は、実施の形態３のグループ分割のサブルーチンの処理の流れを示すフローチャートである。グループ分割のサブルーチンは、境界事象を定めてグループを分割するサブルーチンである。図３５を使用してグループ分割のサブルーチンの処理の流れを説明する。
【０１３３】
サーバＣＰＵ２２は、開始位置を１に、カウンタＪを１に設定する（ステップＳ７６１）。開始位置は、グループＤＢ内の一連の処理の基準のレコードを示すカウンタである。Ｊは、連続して挿入する境界フラグの数を示すカウンタである。サーバＣＰＵ２２は、ステップＳ５０３で取得したグループに対応するレコードを有するグループＤＢを作成する（ステップＳ７６２）。ここで作成するグループＤＢのレコードレイアウトは、図３１を使用して説明したものである。サーバＣＰＵ２２は、境界フラグ挿入のサブルーチンを起動する（ステップＳ７６３）。境界フラグ挿入のサブルーチンは、グループＤＢの境界フィールドに境界事象を示すフラグを挿入するサブルーチンである。境界フラグ挿入のサブルーチンの処理の流れは後述する。ステップＳ７６３で起動する境界フラグ挿入のサブルーチンは、ステップＳ５０３で取得したグループに含まれる全てのレコードを処理の対象とする。
【０１３４】
サーバＣＰＵ２２は、カウンタＪに１を加算する（ステップＳ７９１）。サーバＣＰＵ２２は、再分割フラグを初期値ＦＡＬＳＥに設定する（ステップＳ７６４）。サーバＣＰＵ２２は、グループＤＢの境界フィールドを検索して、開始位置から数えて最初の境界フラグが記録されたレコードを抽出する（ステップＳ７６５）。サーバＣＰＵ２２は、ステップＳ７６５で抽出したレコードの１つ前のレコードの時刻フィールドに記録された値と、開始位置に対応するレコードの時刻フィールドに記録された値との差から時間差を算出する（ステップＳ７６６）。
【０１３５】
サーバＣＰＵ２２は、時間差が影響時間以下であるか否かを判定する（ステップＳ７６７）。影響時間を超えると判定した場合は（ステップＳ７６７でＮＯ）、サーバＣＰＵ２２は再分割フラグをＴＲＵＥに設定する（ステップＳ７６８）。サーバＣＰＵ２２は、グループＤＢにＪ＋１時間差フィールドを追加する（ステップＳ７６９）。たとえば、Ｊが２である場合には、サーバＣＰＵ２２はステップＳ７６９で第３時間差フィールドを追加する。サーバＣＰＵ２２は、追加したＪ＋１時間差フィールドに、時刻フィールドに記録された値とＪ＋１個後ろのレコードの時刻フィールドに記録された値との差分を記録する。
【０１３６】
サーバＣＰＵ２２は、境界フラグ挿入のサブルーチンを起動する（ステップＳ７７０）。境界フラグ挿入のサブルーチンは、ステップＳ７６３で起動したサブルーチンと同一のサブルーチンである。ステップＳ７７０で起動する境界フラグ挿入のサブルーチンは、開始フラグに対応するレコードからステップＳ７６５で抽出したレコードの１つ前のレコードまでを処理の対象とする。
【０１３７】
ステップＳ７７０の終了後または影響時間以下であると判定した場合（ステップＳ７６７でＹＥＳ）、サーバＣＰＵ２２は開始位置をステップＳ７６５で境界フラグを抽出したレコードの次のレコードを示す番号に設定する（ステップＳ７７１）。
【０１３８】
サーバＣＰＵ２２は、グループの処理が終了したか否かを判定する（ステップＳ７７２）。処理が終了していないと判定した場合は（ステップＳ７７２でＮＯ）、サーバＣＰＵ２２はステップＳ７６５に戻る。処理が終了したと判定した場合は（ステップＳ７７２でＹＥＳ）、サーバＣＰＵ２２は再分割フラグがＦＡＬＳＥであるか否かを判定する（ステップＳ７７３）。再分割フラグがＦＡＬＳＥではない、すなわちＴＲＵＥである場合は（ステップＳ７７３でＮＯ）、サーバＣＰＵ２２はステップＳ７９１に戻る。再分割フラグがＦＡＬＳＥであると判定した場合は（ステップＳ７７３でＹＥＳ）、サーバＣＰＵ２２は処理を終了する。
【０１３９】
図３６は、実施の形態３の境界フラグ挿入のサブルーチンの処理の流れを示すフローチャートである。境界フラグ挿入のサブルーチンは、グループＤＢの境界フィールドに境界事象を示すフラグを挿入するサブルーチンである。図３６を使用して境界フラグ挿入のサブルーチンの処理の流れを説明する。
【０１４０】
サーバＣＰＵ２２は、カウンタＩを初期値１に設定する（ステップＳ７８１）。サーバＣＰＵ２２は、グループＤＢ中の本サブルーチンの処理の対象とするレコードから、Ｉ番目のレコードを取得する（ステップＳ７８２）。サーバＣＰＵ２２は、取得したレコードの一番大きい時間差フィールドの値が影響時間以下か否かを判定する（ステップＳ７８３）。すなわち、第２時間差フィールドまで存在する場合には第２時間差フィールドの値が影響時間以下であるか否かを判定する。また第３時間差フィールドまで存在する場合には、第３時間差フィールドの値が影響時間以下であるか否かを判定する。
【０１４１】
影響時間以下であると判定した場合は（ステップＳ７８３でＹＥＳ）、サーバＣＰＵ２２はカウンタＩに１を加算する（ステップＳ７８４）。影響時間を超えると判定した場合は（ステップＳ７８３でＮＯ）、サーバＣＰＵ２２はＩ＋１番目のレコードからＪ個のレコードのフラグフィールドに境界フラグを記録する（ステップＳ７８５）。ここでＪは本サブルーチンの呼び出し元のプログラムから引数として取得した、連続して挿入する境界フラグの数を示すカウンタである。サーバＣＰＵ２２は、カウンタＩにＪ＋１を加算する（ステップＳ７８６）。
【０１４２】
ステップＳ７８４またはステップＳ７８６の終了後、サーバＣＰＵ２２はレコードの処理が終了したか否かを判定する（ステップＳ７８７）。終了していないと判定した場合は（ステップＳ７８７でＮＯ）、サーバＣＰＵ２２はステップＳ７８２に戻る。終了したと判定した場合は（ステップＳ７８７でＹＥＳ）、サーバＣＰＵ２２は処理を終了する。
【０１４３】
図３７は、実施の形態３の境界フラグの前後をカウントするサブルーチンの処理の流れを示すフローチャートである。境界フラグの前後をカウントするサブルーチンは、Ｍ番目の境界事象とその前後の影響時間の範囲内の事象との組み合わせを組み合わせ回数ＤＢ４３に記録するサブルーチンである。図３７を使用して、境界フラグの前後をカウントするサブルーチンの処理の流れを説明する。
【０１４４】
サーバＣＰＵ２２は、グループＤＢからＭ番目の境界フラグを含むレコードを抽出する（ステップＳ８０１）。ここでＭは本サブルーチンの呼び出し元のプログラムから引数として取得した、処理対象の境界フラグを示すカウンタである。
【０１４５】
サーバＣＰＵ２２は、抽出したレコードの事象フィールドに記録されている事象を第２事象に設定する（ステップＳ８０２）。第２事象は、本サブルーチン内で使用する変数の名称である。サーバＣＰＵ２２は、境界フラグを含むレコードから影響時間の範囲内の前、すなわち過去のレコードを抽出する（ステップＳ８０３）。サーバＣＰＵ２２は、カウンタＪを初期値１に設定する（ステップＳ８０４）。
【０１４６】
サーバＣＰＵ２２は、ステップＳ８０３で抽出したレコードのうちＪ番目のレコードの事象フィールドに記録されている事象を第１事象に設定する（ステップＳ８０５）。第１事象は、本サブルーチン内で使用する変数の名称である。
【０１４７】
サーバＣＰＵ２２は、組み合わせ回ＤＢ４３の第１事象および第２事象に対応するフィールドに１を加算する（ステップＳ８０６）。具体的には、たとえば第１事象がＢ、第２事象がＣである場合には、第２事象がＣのレコードのＢフィールドに１を加算する。サーバＣＰＵ２２は、組み合わせ時刻ＤＢに第１事象、第２事象および第２事象に関連付けられた時刻を記録したレコードを追加する（ステップＳ８０７）。
【０１４８】
サーバＣＰＵ２２は、ステップＳ８０３で抽出した第１事象のレコードの処理が終了したか否かを判定する（ステップＳ８０８）。処理が終了していないと判定した場合は（ステップＳ８０８でＮＯ）、サーバＣＰＵ２２はカウンタＪに１を加算する（ステップＳ８０９）。その後サーバＣＰＵ２２はステップＳ８０５に戻る。
【０１４９】
処理が終了したと判定した場合は（ステップＳ８０８でＹＥＳ）、サーバＣＰＵ２２は、ステップＳ８０１で抽出したレコードの事象フィールドに記録されている事象を第１事象に設定する（ステップＳ８１２）。サーバＣＰＵ２２は、境界フラグを含むレコードから影響時間の範囲内の後、すなわち未来のレコードを抽出する（ステップＳ８１３）。サーバＣＰＵ２２は、カウンタＪを初期値１に設定する（ステップＳ８１４）。
【０１５０】
サーバＣＰＵ２２は、ステップＳ８１３で抽出したレコードのうちＪ番目のレコードの事象フィールドに記録されている事象を第２事象に設定する（ステップＳ８１５）。第１事象は、本サブルーチン内で使用する変数の名称である。
【０１５１】
サーバＣＰＵ２２は、組み合わせ回ＤＢ４３の第１事象および第２事象に対応するフィールドに１を加算する（ステップＳ８１６）。サーバＣＰＵ２２は、組み合わせ時刻ＤＢに第１事象、第２事象および第２事象に関連付けられた時刻を記録したレコードを追加する（ステップＳ８１７）。
【０１５２】
サーバＣＰＵ２２は、ステップＳ８１３で抽出した第２事象のレコードの処理が終了したか否かを判定する（ステップＳ８１８）。処理が終了していないと判定した場合は（ステップＳ８１８でＮＯ）、サーバＣＰＵ２２はカウンタＪに１を加算する（ステップＳ８１９）。処理が終了したと判定した場合は（ステップＳ８１８でＹＥＳ）、サーバＣＰＵ２２は処理を終了する。
【０１５３】
本実施の形態によると、準隔離集合中の事象同士の時間間隔の平均値が影響時間を若干下回る程度である場合に、計算時間が短い情報処理システム１０を提供することができる。
【０１５４】
図３５を使用して説明したグループ分割のサブルーチン中のカウンタＪの上限値をあらかじめ定めておいても良い。この場合、Ｊが上限値に達した場合には、影響時間よりも長いグループが残っていてもグループを分割する処理を停止する。影響時間よりも長いグループ内部の組み合わせは、図１７を使用して説明した準隔離カウントのサブルーチンで処理する。Ｊを適切に設定することにより、計算時間が短い情報処理システム１０を提供することができる。
【０１５５】
［実施の形態４］
本実施の形態は、事象間の間隔を上位から加算することにより、連続する境界事象の最小数を定める情報処理装置等に関する。実施の形態３と共通する部分については、説明を省略する。
【０１５６】
図３８は、実施の形態４の事象の発生状態の例を示す説明図である。図３８の横軸は時間である。図３８の縦軸は発生した事象の記号を示す。黒丸は、横軸で示す時刻に、縦軸で示す事象が発生したことを示す。図３８を使用して、本実施の形態の概要を説明する。
【０１５７】
図３８は、一つの準隔離集合の事象の発生状態を示す。図３８に示す事象は、隣接する事象との間は影響時間である２０秒以下である。また、図３８の左端の事象とその前の事象との間は、影響時間よりも離れている。同様に、図３８の右端の事象とその後の事象との間も、影響時間よりも離れている。
【０１５８】
図３８の場合、各事象の間の間隔のムラが少ないため、１個または連続する２個の事象を境界事象にしても、事象を影響時間より離れたグループに分けることができない。図３８に破線で示すように、連続する３個の事象を境界事象にすることにより、事象を影響時間より間隔が離れた３個のグループに分けることができる。この場合には、事象間の間隔を上位から加算して境界事象の最低限必要な連続数を定めることにより、計算時間を短くすることができる。ここまで説明した操作に使用するＤＢについて、以下に説明する。
【０１５９】
図３９および図４０は、実施の形態４の時間差加算ＤＢのレコードレイアウトを示す説明図である。時間差加算ＤＢは、準隔離集合を完全隔離集合と境界事象とに分割する際に使用するＤＢである。本実施の形態の時間差加算ＤＢは、時刻フィールド、事象フィールド、時間差フィールド、加算数フィールドおよび和フィールドを有する。時間差加算ＤＢは、境界フラグ挿入のサブルーチンを連続何個の境界フラグの挿入から開始するかを定める際に使用するＤＢである。
【０１６０】
時刻フィールドには、日時を示す数値が記録されている。事象フィールドには、時刻フィールドに記録された時刻に発生した被験者の状態の変化を示す記号が記録されている。時間差フィールドには、次の事象との間の時間差が記録されている。加算数フィールドおよび和フィールドについては、後述する。時間差加算ＤＢは、事象に対応する１つの時刻について１つのレコードを有する。時間差加算ＤＢは、サーバＣＰＵ２２が必要に応じて補助記憶装置２４または主記憶装置２３に一時的に作成するＤＢである。
【０１６１】
サーバＣＰＵ２２は、時系列ＤＢ４２中の本実施の形態の処理を行う準隔離集合に対応する部分を時刻フィールドおよび事象フィールドに複写する。図３９に示す時間差加算ＤＢは時刻フィールドのデータの昇順で記録されている。
【０１６２】
サーバＣＰＵ２２は、時間差フィールドに、時刻フィールドに記録された値と次のレコードの時刻フィールドに記録された値との差を記録する。たとえば、図３９の一番上に示すレコードの場合、時刻フィールドには７１２が記録されている。次のレコードの時刻フィールドには、７１７が記録されている。したがって、サーバＣＰＵ２２は、一番上に示すレコードの時間差フィールドには７１７と７１２との差分である５を記録する。グループＤＢの最後の１つのレコードは、グループＤＢ内に次のレコードが存在しないため、空欄である。
【０１６３】
サーバＣＰＵ２２は、時間差フィールドに記録された値をキーとしてレコードを降順に並べ替える。並べ替えた後のグループＤＢの例を図４０に示す。サーバＣＰＵ２２は、一番上のレコード、すなわち時間差フィールドに記録された値が最大であるレコードの加算数フィールドに０を記録する。サーバＣＰＵ２２は、同じレコードの和フィールドに時間差フィールドに記録された値を上位から加算数フィールドに記録された数加算した値を和フィールドに記録する。
【０１６４】
サーバＣＰＵ２２は、加算数フィールドに記録する数値を１づつ加算して、和フィールドを順次求める。たとえば、時刻フィールドの値が７３３のレコードの場合、加算数フィールドの値は４であり、和フィールドの値は時間差フィールドの上位４レコード分を加算した２６である。このレコードで和フィールドに記録された値が影響時間を超えるので、サーバＣＰＵ２２は加算数フィールドおよび和フィールドの処理を停止する。
【０１６５】
以上により、本実施の形態の場合には影響時間を超えるためには事象間の時間差を４以上加算する必要があることがわかる。これは、境界事象が３個以上であることを意味している。したがって、図３６を使用して説明した境界フラグ挿入のサブルーチンを連続３個の境界フラグの挿入から開始することにより、計算時間を短縮することができる。
【０１６６】
図４１は、実施の形態４のグループ分割のサブルーチンの処理の流れを示すフローチャートである。本サブルーチンは、図３５を使用して説明したグループ分割のサブルーチンの代わりに使用するサブルーチンである。図４１を使用して、本実施の形態のグループ分割のサブルーチンの処理の流れを説明する。
【０１６７】
サーバＣＰＵ２２は、境界数算出のサブルーチンを起動する（ステップＳ８２１）。境界数算出のサブルーチンは、境界フラグ挿入のサブルーチンを連続何個の境界フラグの挿入から開始するかを定めるサブルーチンである。境界数算出の処理の流れは後述する。
【０１６８】
サーバＣＰＵ２２は、開始位置を１に、カウンタＪを境界数算出のサブルーチンで算出した境界フラグ数に設定する（ステップＳ８２２）。開始位置は、グループＤＢ内の一連の処理の基準のレコードを示すカウンタである。Ｊは、連続して挿入する境界フラグの数を示すカウンタである。サーバＣＰＵ２２は、グループＤＢを作成する（ステップＳ７６２）。ステップＳ７６２およびそれ以降の処理は、図３５を使用して説明した実施の形態３のグループ分割のサブルーチンと同一であるので、説明を省略する。
【０１６９】
図４２は、実施の形態４の境界数算出のサブルーチンの処理の流れを示すフローチャートである。境界数算出のサブルーチンは、境界フラグ挿入のサブルーチンを連続何個の境界フラグの挿入から開始するかを定めるサブルーチンである。図４２を使用して、境界数算出のサブルーチンの処理の流れを説明する。
【０１７０】
サーバＣＰＵ２２は、ステップＳ５０３で取得したグループに対応するレコードを有する時間差加算ＤＢを作成する（ステップＳ８４１）。時間差加算ＤＢは図３９および図４０を使用して説明したＤＢである。ここで、サーバＣＰＵ２２は、時系列ＤＢ４２中の本実施の形態の処理を行う準隔離集合に対応する部分を時刻フィールドおよび事象フィールドに複写する。また、サーバＣＰＵ２２は、時間差加算ＤＢの時間差フィールドに、時刻フィールドに記録された値と、次のレコードの時刻フィールドに記録された値との差を記録する。
【０１７１】
サーバＣＰＵ２２は、時間差加算ＤＢのレコードを時間差フィールドをキーとして降順に並べ替える（ステップＳ８４２）。サーバＣＰＵ２２は、カウンタＪを初期値１に設定する（ステップＳ８４３）。
【０１７２】
サーバＣＰＵ２２は、上位Ｊ個の時間差フィールドを加算して、合計値を算出する（ステップＳ８４４）。サーバＣＰＵ２２は、算出した合計値が影響時間より大きいか否かを判定する（ステップＳ８４５）。影響時間以下であると判定した場合（ステップＳ８４５でＮＯ）、サーバＣＰＵ２２はカウンタＪに１を加算する（ステップＳ８４６）。サーバＣＰＵ２２は、ステップＳ８４４に戻る。影響時間より大きいと判定した場合（ステップＳ８４５でＹＥＳ）、サーバＣＰＵ２２は境界フラグ数をＪ−１に設定する（ステップＳ８４７）。境界フラグ数は、本サブルーチンが呼び出し元に引き渡す引数である。サーバＣＰＵ２２は、その後処理を終了する。
【０１７３】
［実施の形態５］
本実施の形態は、前後の事象の間の時間差が大きくなる事象を境界事象に選択し、その境界事象の前後の事象の時間差が影響時間を下回る場合には、隣接する事象も境界事象に選択することにより、準隔離集合を完全隔離集合に分けて処理する情報処理装置等に関する。実施の形態３と共通する部分については、説明を省略する。
【０１７４】
図４３から図４５は、実施の形態５の事象の発生状態の例を示す説明図である。図４３から図４５の横軸は時間である。図４３から図４５の縦軸は発生した事象の記号を示す。黒丸は、横軸で示す時刻に、縦軸で示す事象が発生したことを示す。図４３から図４５を使用して、本実施の形態の概要を説明する。
【０１７５】
図４３から図４５は、一つの準隔離集合の事象の発生状態を示す。図４３から図４５に示す事象は、隣接する事象との間は影響時間である２０秒以下である。また、図４３から図４５の左端の事象とその前の事象との間は、影響時間よりも離れている。同様に、図４３から図４５の右端の事象とその後の事象との間も、影響時間よりも離れている。
【０１７６】
図４３では、右側の事象との間隔が最も大きい事象が、境界事象に選択されている。この境界事象により、準隔離集合は破線の矩形で示す２個のグループに分離されている。２個のグループの間隔は、影響時間よりも長くなっている。右側のグループは影響時間よりも短いグループに、左側のグループは影響時間よりも長いグループになっている。
【０１７７】
図４３では、図４３の右側のグループについて右側の事象との間隔が最も大きい事象およびそれに隣接する事象が、境界事象に選択されている。この境界事象により、右側のグループは破線の角丸矩形で示す２個のグループに分離されている。２個のグループの間隔は、影響時間よりも長くなっている。右側のグループは影響時間よりも短いグループに、左側のグループは影響時間よりも長いグループになっている。
【０１７８】
図４４では、図４３の右側のグループについて右側の事象との間隔が最も大きい事象およびそれに隣接する事象が、境界事象に選択されている。この境界事象により、右側のグループは破線の角丸矩形で示す２個のグループに分離されている。２個のグループの間隔は、影響時間よりも長くなっている。右側のグループは影響時間よりも短いグループに、左側のグループは影響時間よりも長いグループになっている。
【０１７９】
図４５では、図４４の右側のグループについて右側の事象との間隔が最も大きい事象およびそれに隣接する事象が、境界事象に選択されている。この境界事象により、右側のグループは点線の矩形で示す２個のグループに分離されている。２個のグループの間隔は、影響時間よりも長くなっている。左右のグループは影響時間よりも短いグループになっている。以上のようにして、図４３から図４５に示す準隔離集合を４個の完全隔離集合と５個の境界事象とに分割することができる。
【０１８０】
仮に、連続する２個の事象を境界事象にした場合でもグループ間の間隔が影響時間よりも短い場合には、連続する境界事象の数を順次増やしていく。この分割の操作に使用するＤＢについて、以下に説明する。
【０１８１】
図４６は、実施の形態５のグループＤＢのレコードレイアウトを示す説明図である。グループＤＢは、準隔離集合を完全隔離集合と境界事象とに分割する際に使用するＤＢである。グループＤＢは、時刻フィールド、事象フィールド、時間差フィールドおよびフラグフィールドを有する。
【０１８２】
時刻フィールドには、日時を示す数値が記録されている。事象フィールドには、時刻フィールドに記録された時刻に発生した被験者の状態の変化を示す記号が記録されている。時間差フィールドには、１つ後の事象との間の時間差が記録されている。フラグフィールドには、境界事象であることを示すフラグが記録されている。グループＤＢは、事象に対応する１つの時刻について１つのレコードを有する。グループＤＢは、サーバＣＰＵ２２が必要に応じて補助記憶装置２４または主記憶装置２３に一時的に作成するＤＢである。
【０１８３】
サーバＣＰＵ２２は、時系列ＤＢ４２中の本実施の形態の処理を行う準隔離集合に対応する部分を時刻フィールドおよび事象フィールドに複写する。なお、時系列ＤＢ４２と同様にグループＤＢも時刻フィールドのデータの昇順で記録されている。
【０１８４】
サーバＣＰＵ２２は、時間差フィールドに、時刻フィールドに記録された値と次のレコードの時刻フィールドに記録された値との差を記録する。たとえば、図４６の一番上に示すレコードの場合、時刻フィールドには７１２が記録されている。次のレコード、すなわち二番目に示すレコードの時刻フィールドには、７１９が記録されている。したがって、サーバＣＰＵ２２は、一番上に示すレコードの時間差フィールドには７１９と７１２との差分である７を記録する。グループＤＢの最後のレコードは、グループＤＢ内に次のレコードが存在しないため、空欄である。
【０１８５】
サーバＣＰＵ２２は、図４６のグループＤＢの時間差フィールドを検索して最大値レコードを抽出する。図４６の場合は、時間差フィールドに記録された値が最大なのは、楕円で示す１５のレコードである。したがって、サーバＣＰＵ２２は、このレコードのフラグフィールドに境界事象であることを示す「境界」と記録する。境界事象の前側のレコードの時刻フィールドは７８３、境界事象の後側のレコードの時刻フィールドは８０７である。したがってサーバＣＰＵ２２は、境界事象前後のグループの間隔は、８０７と７８３との差分である２４であり、２つのグループの間隔は影響時間よりも長いと判定する。また、サーバＣＰＵ２２は、境界事象の後側のグループの長さは８１４と８０７との差分である７であるので、影響時間よりも短いグループであると判定する。同様に、サーバＣＰＵ２２は、境界事象の前側のグループの長さは７８３と７１２との差分である７１であるので影響時間よりも長いグループであると判定する。
【０１８６】
サーバＣＰＵ２２は、前側の長いグループの処理を開始する。サーバＣＰＵ２２は、前側のグループ内で時間差フィールドを検索して最大値のレコードを抽出する。図４６の場合は、時間差フィールドが最も大きいのは、長方形で示す１３のレコードである。したがって、サーバＣＰＵ２２は、このレコードのフラグフィールドに境界事象であることを示す「境界」と記録する。境界事象の前側のレコードの時刻フィールドは７５２、境界事象の後側のレコードの時刻フィールドは７６８である。したがってサーバＣＰＵ２２は、境界フィールド前後のグループの間隔は、７６８と７５２との差分である１６であり、２つのグループの間隔は影響時間よりも短いと判定する。
【０１８７】
サーバＣＰＵ２２は、時間差フィールドに１３と記録されたレコードの前後のレコードの時間差フィールドに記録された値を比較し、大きい方のレコードのフラグフィールドに境界事象であることを示す「境界」と記録する。２個の境界事象の前側のレコードの時刻フィールドは７５２、後側のレコードの時刻フィールドは７７３である。したがってサーバＣＰＵ２２は、境界事象前後のグループの間隔は、７７３と７５２との差分である２１であり、２つのグループの間隔は影響時間よりも長いと判定する。また、サーバＣＰＵ２２は、境界事象の後側のグループの長さは７８３と７７３との差分である６であるので、影響時間よりも短いグループであると判定する。サーバＣＰＵ２２は、境界事象の前側のグループの長さは７５２と７１２との差分である４０であるので影響時間よりも長いグループであると判定する。
【０１８８】
以後、サーバＣＰＵ２２は、影響時間よりも長いグループ内で時間差が最大値のレコードを抽出して境界事象であると判定し、グループ間の間隔が影響時間よりも長くなるまで隣接する事象を境界事象であると判定する操作を繰り返す。以上により、サーバＣＰＵ２２は準隔離集合を４個の完全隔離集合と５個の境界事象とに分割する。
【０１８９】
図４７は、実施の形態５のグループ分割のサブルーチンの処理の流れを示すフローチャートである。本サブルーチンは、図３５を使用して説明したグループ分割のサブルーチンの代わりに使用するサブルーチンである。図４７を使用して、本実施の形態のグループ分割のサブルーチンの処理の流れを説明する。
【０１９０】
サーバＣＰＵ２２は、開始位置を１に、カウンタＪを１に設定する（ステップＳ７６１）。開始位置は、グループＤＢ内の一連の処理の基準のレコードを示すカウンタである。Ｊは、連続して挿入する境界フラグの数を示すカウンタである。サーバＣＰＵ２２は、ステップＳ５０３で取得したグループに対応するレコードを有するグループＤＢを作成する（ステップＳ８６１）。ここで作成するグループＤＢのレコードレイアウトは、図４６を使用して説明したものである。サーバＣＰＵ２２は、境界フラグ挿入のサブルーチンを起動する（ステップＳ８６２）。境界フラグ挿入のサブルーチンは、グループＤＢの境界フィールドに境界事象を示すフラグを挿入するサブルーチンである。境界フラグ挿入のサブルーチンの処理の流れは後述する。ステップＳ８６２で起動する境界フラグ挿入のサブルーチンは、ステップＳ５０３で取得したグループに含まれる全てのレコードを処理の対象とする。
【０１９１】
サーバＣＰＵ２２は、カウンタＪに１を加算する（ステップＳ８９１）。サーバＣＰＵ２２は、再分割フラグを初期値ＦＡＬＳＥに設定する（ステップＳ８６４）。サーバＣＰＵ２２は、グループＤＢの境界フィールドを検索して、開始位置から数えて最初の境界フラグが記録されたレコードを抽出する（ステップＳ８６５）。サーバＣＰＵ２２は、ステップＳ７６５で抽出したレコードの１つ前のレコードの時刻フィールドに記録された値と、開始位置に対応するレコードの時刻フィールドに記録された値との差から時間差を算出する（ステップＳ８６６）。
【０１９２】
サーバＣＰＵ２２は、時間差が影響時間以下であるか否かを判定する（ステップＳ８６７）。影響時間を超えると判定した場合は（ステップＳ８６７でＮＯ）、サーバＣＰＵ２２は再分割フラグをＴＲＵＥに設定する（ステップＳ８６８）。サーバＣＰＵ２２は、境界フラグ挿入のサブルーチンを起動する（ステップＳ８７０）。境界フラグ挿入のサブルーチンは、ステップＳ８６２で起動したサブルーチンと同一のサブルーチンである。ステップＳ８７０で起動する境界フラグ挿入のサブルーチンは、開始フラグに対応するレコードからステップＳ８６５で抽出したレコードの１つ前のレコードまでを処理の対象とする。
【０１９３】
ステップＳ８７０の終了後または影響時間以下であると判定した場合（ステップＳ８６７でＹＥＳ）、サーバＣＰＵ２２は開始位置をステップＳ８６５で境界フラグを抽出したレコードの次のレコードを示す番号に設定する（ステップＳ８７１）。
【０１９４】
サーバＣＰＵ２２は、グループの処理が終了したか否かを判定する（ステップＳ８７２）。処理が終了していないと判定した場合は（ステップＳ８７２でＮＯ）、サーバＣＰＵ２２はステップＳ８６５に戻る。処理が終了したと判定した場合は（ステップＳ８７２でＹＥＳ）、サーバＣＰＵ２２は再分割フラグがＦＡＬＳＥであるか否かを判定する（ステップＳ８７３）。再分割フラグがＦＡＬＳＥではない、すなわちＴＲＵＥである場合は（ステップＳ８７３でＮＯ）、サーバＣＰＵ２２はステップＳ８９１に戻る。再分割フラグがＦＡＬＳＥであると判定した場合は（ステップＳ８７３でＹＥＳ）、サーバＣＰＵ２２は処理を終了する。
【０１９５】
図４８は、実施の形態５の境界フラグ挿入のサブルーチンの処理の流れを示すフローチャートである。境界フラグ挿入のサブルーチンは、グループＤＢの境界フィールドに境界事象を示すフラグを挿入するサブルーチンである。図４８を使用して本実施の形態の境界フラグ挿入のサブルーチンの処理の流れを説明する。
【０１９６】
サーバＣＰＵ２２は、処理対象のレコードから時間差フィールドに記録された値が最大のレコードを抽出し、フラグフィールドに境界事象であることを示す「境界」と記録する（ステップＳ９０１）。サーバＣＰＵ２２は、境界事象の前後の時間差を算出する（ステップＳ９０２）。具体的には、境界事象の前後のレコードの時刻フィールドに記録された値の差分を算出する。
【０１９７】
サーバＣＰＵ２２は、算出した時間差が影響時間を超えるか否かを判定する（ステップＳ９０３）。影響時間以下であると判定した場合（ステップＳ９０３でＮＯ）、サーバＣＰＵ２２は境界事象の前後のレコードの時間差フィールドを比較する（ステップＳ９０４）。サーバＣＰＵ２２は、時間差フィールドが大きいと判定した方のレコードのフラグフィールドに、境界事象であることを示す「境界」と記録する（ステップＳ９０５）。サーバＣＰＵ２２はステップＳ９０２に戻る。
【０１９８】
算出した時間差が影響時間を超えると判定した場合（ステップＳ９０３でＹＥＳ）、サーバＣＰＵ２２は処理を終了する。
【０１９９】
本実施の形態によると、ＤＢの並べ替えのような負荷の大きい処理を避けることができるので、計算時間が短い情報処理システム１０を提供することができる。
【０２００】
［実施の形態６］
本実施の形態は、１日分ごとに組み合わせ回数ＤＢ４３を作成しておく形態に関する。図４９は、実施の形態６の組み合わせ回数ＤＢ４３のレコードレイアウトを示す説明図である。実施の形態１と共通する部分については、説明を省略する。
【０２０１】
本実施の形態の組み合わせ回数ＤＢ４３は、第１事象の後、所定の影響時間内に第２事象が発生した回数を１日分づつ記録するＤＢである。組み合わせ回数ＤＢ４３は、日付フィールド、第１事象フィールドおよび第２事象フィールドを備える。日付フィールドには、関連づけられた日付が記録されている。本実施の形態の組み合わせ回数ＤＢ４３は、図５を使用して説明した組み合わせ回数ＤＢ４３に日付フィールドを追加したＤＢである。なお、日付の区切りは０時に限定しない。事象の発生頻度が少ない時間を適宜選択する。
【０２０２】
本実施の形態では、同様に図７を使用して説明した発生数ＤＢ４４および組み合わせ時刻ＤＢにも日付フィールドを追加する。本実施の形態で使用する発生数ＤＢ４４および組み合わせ時刻ＤＢの図示は省略する。
【０２０３】
図５０は、実施の形態６のプログラムの処理の流れを示すフローチャートである。図５０に示すプログラムは、時系列ＤＢ４２からレコードを取得して、影響時間内に２つの事象の組み合わせが発生する回数を１日分ごとに算出するプログラムである。図５０を使用して、本実施の形態のプログラムの処理の流れを説明する。
【０２０４】
サーバＣＰＵ２２はデータを処理する日付を取得する（ステップＳ９２１）。毎日本実施の形態のプログラムの処理を行う場合には、前日の日付とすることが望ましい。サーバＣＰＵ２２は、組み合わせ回数ＤＢ４３および組み合わせ時刻ＤＢを初期化する（ステップＳ９２２）。すなわちサーバＣＰＵ２２は、ステップＳ９２１で取得した日付に対応する組み合わせ回数ＤＢ４３の各フィールドの値を初期値である０に設定する。さらに、サーバＣＰＵ２２は、ステップＳ９２１で取得した日付に対応する組み合わせ時刻ＤＢのレコードを全て削除する。
【０２０５】
サーバ２２は、グループ取得のサブルーチンを起動する（ステップＳ９２３）。グループ取得のサブルーチンは、時系列ＤＢ４２内のデータから、一つ前および一つ後ろの事象との間の時間が影響時間以上離れた事象のグループを取得するサブルーチンである。グループ取得のサブルーチンは、たとえば図１５を使用して説明したサブルーチンを使用する。
【０２０６】
サーバＣＰＵ２２は、取得したグループの最初のイベントと最後のイベントとの間の時間が影響時間以下であるか否かを判定する（ステップＳ９２４）。影響時間以下である場合は（ステップＳ９２４でＹＥＳ）、サーバＣＰＵ２２は完全隔離カウントのサブルーチンを起動する（ステップＳ９２５）。完全隔離カウントのサブルーチンは、完全隔離集合内のイベントの組み合わせを組み合わせ回数ＤＢ４３に記録するサブルーチンである。完全隔離カウントのサブルーチンは、たとえば図１６を使用して説明したサブルーチンを使用する。
【０２０７】
影響時間より長い場合は（ステップＳ９２４でＮＯ）、サーバＣＰＵ２２は準隔離カウントのサブルーチンを起動する（ステップＳ９２６）。準隔離カウントのサブルーチンは、準隔離集合内のイベントの組み合わせを組み合わせ回数ＤＢ４３に記録するサブルーチンである。準隔離カウントのサブルーチンは、たとえば図１７を使用して説明したサブルーチンを使用する。
【０２０８】
ステップＳ９２５またはステップＳ９２６の終了後、サーバＣＰＵ２２は１日分の時系列ＤＢ４２の解析を終了したか否かを判定する（ステップＳ９２７）。サーバＣＰＵ２２は、解析を終了する位置を、前述のとおりステップＳ５０２で取得する。終了していないと判定した場合は（ステップＳ９２７でＮＯ）、サーバＣＰＵ２２はステップＳ９２３に戻る。終了したと判定した場合は（ステップＳ９２７でＹＥＳ）、サーバＣＰＵ２２はステップＳ９２１で取得した日付における各事象の数を数えて発生数ＤＢ４４を作成する（ステップＳ９２８）。サーバＣＰＵ２２は、以上の処理で作成した組み合わせ回数ＤＢ４３、組み合わせ時刻ＤＢおよび発生数ＤＢ４４を補助記憶装置２４に保存する。その後、サーバＣＰＵ２２は処理を終了する。
【０２０９】
本実施の形態によると、１日分ごとの組み合わせ回数ＤＢ４３、組み合わせ時刻ＤＢおよび発生数ＤＢ４４が作成されて補助記憶装置２４に保存されている。したがってデータを解析するユーザは、解析対象の日のデータを取得して汎用の表計算ソフト等に読み込ませる事により、容易にデータの解析を行うことができる。
【０２１０】
［実施の形態７］
図５１は、実施の形態７の情報処理装置の動作を示す機能ブロック図である。情報処理装置は、ＣＰＵ１２による制御に基づいて以下のように動作する。取得部６１は、複数の種類の事象と該事象に関連付けられた時刻とに関する情報を含む時系列データを時系列ＤＢ４２から取得する。分割部６２は、時系列データを時刻の間隔が影響時間よりも大きい複数の群に時間軸上で分割する。関連付け部６３は、群の開始時刻から終了時刻までの時間が関連時間以下の場合には、群に含まれる事象の組み合わせと、発生数とを関連付ける。
【０２１１】
［実施の形態８］
実施の形態８は、汎用のコンピュータとプログラム７１とを組み合わせて動作させることにより、情報処理システム１０を実現する形態に関する。図５２は、実施の形態８の情報処理システム１０を構成するサーバ２０およびクライアント３０の構成を示す説明図である。図５２を使用して、本実施の形態の構成を説明する。なお、実施の形態１と共通する部分の説明は省略する。
【０２１２】
サーバ２０は、サーバＣＰＵ２２、主記憶装置２３、補助記憶装置２４、通信部２５、読取部２８およびバスを備える。読取部２８は、たとえば光学ディスク読取装置である。
【０２１３】
プログラム７１は、可搬型記録媒体７２に記録されている。サーバＣＰＵ２２は、読取部２８を介してプログラム７１を読み込み、補助記憶装置２４に保存する。またサーバＣＰＵ２２は、入力装置１０内に実装されたフラッシュメモリ等の半導体メモリ７３に記憶されたプログラム７１を読出しても良い。さらに、ＣＰＵ１２は、通信部２５およびネットワーク１９を介して接続される図示しない他のサーバコンピュータからプログラム７１をダウンロードして補助記憶装置２４に保存しても良い。
【０２１４】
プログラム３８は、サーバ２０の制御プログラムとしてインストールされ、主記憶装置２３にロードして実行される。これにより、情報処理システムは上述した情報処理システム１０として機能する。
【０２１５】
各実施例で記載されている技術的特徴（構成要件）はお互いに組み合わせ可能であり、組み合わせすることにより、新しい技術的特徴を形成することができる。
今回開示された実施の形態はすべての点で例示であって、制限的なものでは無いと考えられるべきである。本発明の範囲は、上記した意味では無く、請求の範囲によって示され、請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【０２１６】
（付記１）
事象の種類と該事象が生じた時刻に関する情報を含む時系列データを取得し、
前記時系列データを、一の事象が生じた時刻から該事象の次の事象が生じた時刻までの間の間隔が、双方の事象に因果関係があるとみなす所定時間よりも長い箇所で群に分割する
処理をコンピュータに実行させるプログラム。
【０２１７】
（付記２）
前記群毎に、群に含まれる事象の組み合わせと、該組み合わせの発生数とを関連付ける
処理をコンピュータに実行させる付記１に記載のプログラム。
【０２１８】
（付記３）
前記群の開始時刻から終了時刻までの時間が前記所定時間より長い場合には、該群の最初の事象から、該最初の事象が生じた時刻から該群の中の境界事象の前の事象が生じた時刻までの時間が前記所定時間より短く、該境界事象の前の事象が生じた時刻から、該境界事象の次の事象が生じた時刻までの間隔が該所定時間よりも長い境界事象の前の事象までの第２群を時間軸上で該群から分割し、
該第２群に含まれる事象の組み合わせと、該組み合わせの発生数とを関連付け、
前記境界事象が生じた時刻から前記所定時間の範囲の時刻に生じた事象と前記境界事象との組み合わせと、該組み合わせの発生数とを関連付ける
処理をコンピュータに実行させる付記１または付記２に記載のプログラム。
【０２１９】
（付記４）
前記境界事象は、時間軸上で隣接する事象との時間間隔に基づいて定められる
付記３に記載のプログラム。
【０２２０】
（付記５）
前記境界事象は、時間軸上で隣接する事象との時間間隔に基づいて定められた事象および時間軸上で該事象に連続する事象である
付記３または付記４に記載のプログラム。
【０２２１】
（付記６）
前記境界事象には、時間軸上で隣接する事象との時間間隔が前記群内で最大の事象を含む
付記３から付記５のいずれか一つに記載のプログラム。
【０２２２】
（付記７）
前記群の開始時刻から終了時刻までの時間が前記所定時間より長い場合には、時間軸上で所定の数の境界事象を介して隣接する事象との間隔が所定時間よりも大きい複数の第２群に該群を分割し、
前記第２群の開始時刻から終了時刻までの時間が前記所定時間より長い場合には、前記所定の数を増やして時間軸上で該所定の数の境界事象を介して隣接する事象との間隔が所定時間よりも大きい複数の第２群に該第２群をさらに分割することを繰り返し、
開始時刻から終了時刻までの時間が前記所定時間より短い前記第２群に含まれる事象の組み合わせと、該組み合わせの発生数とを関連付け、
前記境界事象が生じた時刻から前記所定時間の範囲の時刻に生じた事象と前記境界事象との組み合わせと、該組み合わせの発生数とを関連付ける
処理をコンピュータに実行させる付記１に記載のプログラム。
【０２２３】
（付記８）
前記所定の数は、前記群内の各事象と時間軸上で隣接する事象との時間間隔を長いものから順次加算して前記所定時間を超える最小の時間間隔の数を初期値とする
付記７に記載のプログラム。
【０２２４】
（付記９）
前記群の開始時刻から終了時刻までの時間が前記所定時間より長い場合には、時間軸上で隣接する事象との間隔が該群内で最大である境界事象により、時間軸上で該群を第２群に分割し、
前記第２群の開始時刻から終了時刻までの時間が前記所定時間より長い場合には、前記境界事象に時間軸上で隣接する事象を境界事象に加えることを繰り返し、
開始時刻から終了時刻までの時間が前記所定時間より短い前記第２群に含まれる事象の組み合わせと、該組み合わせの発生数とを関連付け、
前記境界事象が生じた時刻から前記所定時間の範囲の時刻に生じた事象と前記境界事象との組み合わせと、該組み合わせの発生数とを関連付ける
処理をコンピュータに実行させる付記１に記載のプログラム。
【０２２５】
（付記１０）
前記群の開始時刻から終了時刻までの時間が前記所定時間より長い場合には、時間軸上で隣接する事象との間隔が該群内で最大である境界事象により、時間軸上で該群を第２群に分割し、
前記第２群の開始時刻から終了時刻までの時間が前記所定時間より長い場合には、時間軸上で隣接する事象との間隔が該第２群内で最大である境界事象により時間軸上で該第２群をさらに第２群に分割することを繰り返し、
開始時刻から終了時刻までの時間が前記所定時間より短い前記第２群に含まれる事象の組み合わせと、該組み合わせの発生数とを関連付け、
前記境界事象が生じた時刻から前記所定時間の範囲の時刻に生じた事象と前記境界事象との組み合わせと、該組み合わせの発生数とを関連付ける
処理をコンピュータに実行させる付記１に記載のプログラム。
【０２２６】
（付記１１）
前記群または第２群の開始時刻から終了時刻までの時間が前記所定時間より長い場合には、該群または第２群内の各事象を開始時刻とする前記所定時間長さの窓内の時刻に関連付けられた前記事象の組み合わせと該組み合わせの発生数とを関連付ける
処理をコンピュータに実行させる付記１から付記１０のいずれか一つに記載のプログラム。
【０２２７】
（付記１２）
前記組み合わせは、１の事象と該事象よりも後に発生した他の事象との組み合わせである
付記２から付記１１のいずれか一つに記載のプログラム。
【０２２８】
（付記１３）
前記組み合わせごとに、前記発生数の和を算出する処理をコンピュータに実行させる付記２から付記１２のいずれか一つに記載のプログラム。
【０２２９】
（付記１４）
前記時系列データに含まれる前記事象の数を前記種類ごとに算出し、
１の種類の事象の数と、該事象と該事象の後に発生した他の種類の事象とに対応する前記和との比を算出する
処理をコンピュータに実行させる付記１３に記載のプログラム。
【０２３０】
（付記１５）
前記時刻は、前記事象が発生したことが検知された時刻である付記１から付記１４のいずれか一つに記載のプログラム。
【０２３１】
（付記１６）
前記時刻は、前記事象が発生したことが記録された時刻である付記１から付記１４のいずれか一つに記載のプログラム。
【０２３２】
（付記１７）
事象の種類と該事象が生じた時刻に関する情報を含む時系列データを取得し、
前記時系列データを、一の事象が生じた時刻から該事象の次の事象が生じた時刻までの間の間隔が、双方の事象に因果関係があるとみなす所定時間よりも長い箇所で群に分割する、
処理をコンピュータに実行させる情報処理方法。
（付記１８）
事象の種類と該事象が生じた時刻に関する情報を含む時系列データを取得する取得部と、
前記時系列データを、一の事象が生じた時刻から該事象の次の事象が生じた時刻までの間の間隔が、双方の事象に因果関係があるとみなす所定時間よりも長い箇所で群に分割する分割部と
を備える情報処理装置。
【符号の説明】
【０２３３】
１０  情報処理システム
１２  センサ制御装置
１３  ドアセンサ
１４  カメラ
１５  ベットセンサ
１６  生体センサ
１７  携帯情報機器
１９  ネットワーク
２０  サーバ
２２  サーバＣＰＵ
２３  主記憶装置
２４  補助記憶装置
２５  通信部
２８  読取部
３０  クライアント
３２  クライアントＣＰＵ
３６  入力部
３７  表示部
４１  事象ＤＢ
４２  時系列ＤＢ
４３  組み合わせ回数ＤＢ
４４  発生数ＤＢ
４５  組み合わせ確率ＤＢ
５１  リスト欄
５２  分析期間欄
５３  ＩＤ欄
５５  データ欄
６１  取得部
６２  分割部
６３  計数部
７１  プログラム
７２  可搬型記録媒体
７３  半導体メモリ
【図１】
2017056179.tif 000003
【図２】
2017056179.tif 000004
【図３】
2017056179.tif 000005
【図４】
2017056179.tif 000006
【図５】
2017056179.tif 000007
【図６】
2017056179.tif 000008
【図７】
2017056179.tif 000009
【図８】
2017056179.tif 000010
【図９】
2017056179.tif 000011
【図１０】
2017056179.tif 000012
【図１１】
2017056179.tif 000013
【図１２】
2017056179.tif 000014
【図１３】
2017056179.tif 000015
【図１４】
2017056179.tif 000016
【図１５】
2017056179.tif 000017
【図１６】
2017056179.tif 000018
【図１７】
2017056179.tif 000019
【図１８】
2017056179.tif 000020
【図１９】
2017056179.tif 000021
【図２０】
2017056179.tif 000022
【図２１】
2017056179.tif 000023
【図２２】
2017056179.tif 000024
【図２３】
2017056179.tif 000025
【図２４】
2017056179.tif 000026
【図２５】
2017056179.tif 000027
【図２６】
2017056179.tif 000028
【図２７】
2017056179.tif 000029
【図２８】
2017056179.tif 000030
【図２９】
2017056179.tif 000031
【図３０】
2017056179.tif 000032
【図３１】
2017056179.tif 000033
【図３２】
2017056179.tif 000034
【図３３】
2017056179.tif 000035
【図３４】
2017056179.tif 000036
【図３５】
2017056179.tif 000037
【図３６】
2017056179.tif 000038
【図３７】
2017056179.tif 000039
【図３８】
2017056179.tif 000040
【図３９】
2017056179.tif 000041
【図４０】
2017056179.tif 000042
【図４１】
2017056179.tif 000043
【図４２】
2017056179.tif 000044
【図４３】
2017056179.tif 000045
【図４４】
2017056179.tif 000046
【図４５】
2017056179.tif 000047
【図４６】
2017056179.tif 000048
【図４７】
2017056179.tif 000049
【図４８】
2017056179.tif 000050
【図４９】
2017056179.tif 000051
【図５０】
2017056179.tif 000052
【図５１】
2017056179.tif 000053
【図５２】
2017056179.tif 000054
【手続補正書】
【提出日】平成30年3月15日(2018.3.15)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム、情報処理装置および情報処理方法に関する。
【背景技術】
【０００２】
コンピュータネットワーク等を使用して、多数の事象の発生時刻を記録した時系列データの収集が行われている。事象間の時間間隔と事象の発生パターンとを組み合わせて、時系列データを複数の系列に分割する方法が開示されている（特許文献１）。
【０００３】
時系列データを固定長の窓により切り出して、窓内の事象の組み合わせを数えた後に、窓を所定の時間ずらす事を繰り返して、時系列データ中に含まれる相互に関連する事象の組み合わせを特定する方法が開示されている（非特許文献１）。
【０００４】
窓の先頭の事象と、窓内の他の事象との組み合わせを数えた後に、窓の開始位置を２番目の事象にずらす事を繰りかえして、時系列データ中に含まれる相互に関連する事象の組み合わせを特定する方法が開示されている（非特許文献２）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１０−６１４１２号公報
【非特許文献】
【０００６】
【非特許文献１】H. Mannila、"Discovery of frequent episodes in event sequences"、Data mining andknowledge discovery、１９９７年、１巻、ｐ２５９−２８９
【非特許文献２】A. Tang、"Efficient mining of intertransaction association rules"、IEEE Transactionson Knowledge and data engineering、２００３年、１５巻、ｐ４３−５６
【発明の概要】
【発明が解決しようとする課題】
【０００７】
特許文献１の方法は、時系列データを分割する方法であり、相互に関連する事象の組み合わせを特定することはできない。非特許文献１および非特許文献２の方法では、窓をずらす操作に時間がかかるため、時系列データの量が多い場合には計算時間が長くなる。
【０００８】
一つの側面では、多数の事象の発生時刻を記録した時系列データから、関連する事象の組み合わせを効率良く抽出するプログラム等を提供することを目的とする。
【課題を解決するための手段】
【０００９】
一態様では、本発明のプログラムは、事象の種類と該事象が生じた時刻に関する情報を含む時系列データを取得し、前記時系列データを、一の事象が生じた時刻から該事象の次の事象が生じた時刻までの間の間隔が、双方の事象に因果関係があるとみなす所定時間よりも長い箇所で群に分割する処理をコンピュータに実行させる。
【発明の効果】
【００１０】
一つの側面では、多数の事象の発生時刻を記録した時系列データから、関連する事象の組み合わせを効率良く抽出するプログラム等を提供することができる。
【図面の簡単な説明】
【００１１】
【図１】情報処理システムの構成を示す説明図である。
【図２】サーバおよびクライアントの構成を示す説明図である。
【図３】事象ＤＢのレコードレイアウトを示す説明図である。
【図４】時系列ＤＢのレコードレイアウトを示す説明図である。
【図５】組み合わせ回数ＤＢのレコードレイアウトを示す説明図である。
【図６】組み合わせ時刻ＤＢのレコードレイアウトを示す説明図である。
【図７】発生数ＤＢのレコードレイアウトを示す説明図である。
【図８】組み合わせ確率ＤＢのレコードレイアウトを示す説明図である。
【図９】窓ＤＢのレコードレイアウトを示す説明図である。
【図１０】事象の発生状態の例を示す説明図である。
【図１１】事象の発生状態の例を示す説明図である。
【図１２】事象の発生状態の例を示す説明図である。
【図１３】事象の発生状態の例を示す説明図である。
【図１４】プログラムの処理の流れを示すフローチャートである。
【図１５】グループ取得のサブルーチンの処理の流れを示すフローチャートである。
【図１６】完全隔離カウントのサブルーチンの処理の流れを示すフローチャートである。
【図１７】準隔離カウントのサブルーチンの処理の流れを示すフローチャートである・。
【図１８】窓ＤＢを作成するサブルーチンの処理の流れを示すフローチャートである。
【図１９】窓ＤＢを作成するサブルーチンの処理の流れを示すフローチャートである。
【図２０】情報処理結果を表示する画面を示す説明図である。
【図２１】情報処理結果を表示する画面を示す説明図である。
【図２２】情報処理結果を表示する画面を示す説明図である。
【図２３】比較例のプログラムの処理の流れを示すフローチャートである。
【図２４】計算時間短縮の効果を示す説明図である。
【図２５】計算時間短縮の効果を示す説明図である。
【図２６】実施の形態２の時系列ＤＢのレコードレイアウトを示す説明図である。
【図２７】実施の形態２のプログラムの処理の流れを示すフローチャートである。
【図２８】実施の形態２のプログラムの処理の流れを示すフローチャートである。
【図２９】実施の形態３の事象の発生状態の例を示す説明図である。
【図３０】実施の形態３の事象の発生状態の例を示す説明図である。
【図３１】実施の形態３のグループＤＢのレコードレイアウトを示す説明図である。
【図３２】実施の形態３のグループＤＢのレコードレイアウトを示す説明図である
【図３３】実施の形態３のプログラムの処理の流れを示すフローチャートである。
【図３４】実施の形態３のプログラムの処理の流れを示すフローチャートである。
【図３５】実施の形態３のグループ分割のサブルーチンの処理の流れを示すフローチャートである。
【図３６】実施の形態３の境界フラグ挿入のサブルーチンの処理の流れを示すフローチャートである。
【図３７】実施の形態３の境界フラグの前後をカウントするサブルーチンの処理の流れを示すフローチャートである。
【図３８】実施の形態４の事象の発生状態の例を示す説明図である。
【図３９】実施の形態４の時間差加算ＤＢのレコードレイアウトを示す説明図である。
【図４０】実施の形態４の時間差加算ＤＢのレコードレイアウトを示す説明図である。
【図４１】実施の形態４のグループ分割のサブルーチンの処理の流れを示すフローチャートである。
【図４２】実施の形態４の境界数算出のサブルーチンの処理の流れを示すフローチャートである。
【図４３】実施の形態５の事象の発生状態の例を示す説明図である。
【図４４】実施の形態５の事象の発生状態の例を示す説明図である。
【図４５】実施の形態５の事象の発生状態の例を示す説明図である。
【図４６】実施の形態５のグループＤＢのレコードレイアウトを示す説明図である。
【図４７】実施の形態５のグループ分割のサブルーチンの処理の流れを示すフローチャートである。
【図４８】実施の形態５の境界フラグ挿入のサブルーチンの処理の流れを示すフローチャートである。
【図４９】実施の形態６の組み合わせ回数ＤＢのレコードレイアウトを示す説明図である。
【図５０】実施の形態６のプログラムの処理の流れを示すフローチャートである。
【図５１】実施の形態７の情報処理装置の動作を示す機能ブロック図である。
【図５２】実施の形態８の情報処理システムの構成を示す説明図である。
【発明を実施するための形態】
【００１２】
［実施の形態１］
図１は、情報処理システム１０の構成を示す説明図である。情報処理システム１０は、サーバ２０、クライアント３０、センサ制御装置１２、携帯情報機器１７およびネットワーク１９を備える。携帯情報機器１７には、生体センサ１６が無線により接続されている。センサ制御装置１２には、ドアセンサ１３、カメラ１４およびベッドセンサ１５が接続されている。サーバ２０は、本実施の形態の情報処理装置の一例である。サーバ２０およびクライアント３０の構成については後述する。
【００１３】
ネットワーク１９は、たとえばインターネット、公衆回線網、専用回線網等の情報通信網である。携帯情報機器１７は、被験者が身に着けたスマートフォン、携帯電話、ウェアラブルコンピュータなどの情報機器である。携帯情報機器１７は、無線ＬＡＮ（Local Area Network）または移動体通信回線を介してネットワークに接続されている。生体センサ１６は、被験者の脈拍、血中酸素濃度、呼吸数等を計測するセンサである。携帯情報機器１７には、複数の生体センサ１６が接続されていても良い。また、携帯情報機器１７には、歩数計等の生体センサ１６が内蔵されていても良い。
【００１４】
ドアセンサ１３は、ドアの開閉またはドアを人が通過したことを検知するセンサである。ドアセンサ１３は被験者の寝室のドア等、被験者の住居の各ドアに取り付けられている。カメラ１４は、映像を使用して被験者の動作を検出するセンサである。カメラ１４は、被験者の寝室内部等、被験者の住居の各所に取り付けられている。ベッドセンサ１５は、就寝中の被験者の状態を検出するセンサである。ベッドセンサ１５は、被験者のベッドに取り付けられている。センサ制御装置１２には、室内の温度を検知する温度計、室内の湿度を検知する湿度計、室内の明るさを検知する照度計等の各種センサが接続されていても良い。またセンサ制御装置１２には、空調装置、照明装置等の家屋内の各種機器の運転状態を検知するセンサが接続されていても良い。また、センサが直接ネットワーク１９に接続されていても良い。
【００１５】
センサ制御装置１２および携帯情報機器１７は、接続された各センサから取得した情報を解析して得た被験者の状態の変化を、ネットワーク１９を介してサーバ２０に送信する。送信する情報の例は後述する。なお、情報処理システム１０には、たとえば被験者の住居と職場等、複数の場所にセンサ制御装置１２が接続されていても良い。
【００１６】
たとえばＩＣカードを使用して自動改札機を通過したという情報および買い物をしたという情報等が、ＩＣカードの運営事業者のサーバからネットワーク１９を介してサーバ２０に送信されても良い。たとえば被験者の心電図を２４時間にわたって記録したホルタ心電図のデータを医療機関で解析して得た情報がサーバ２０に送信されても良い。被験者が携帯情報端末を操作して入力した、たとえば「薬を飲んだ」「頭痛がする」等、センサでは検知しきれない情報をサーバ２０に送信しても良い。
【００１７】
図２は、サーバ２０およびクライアント３０の構成を示す説明図である。サーバ２０は、サーバＣＰＵ（Central Processing Unit）２２、主記憶装置２３、補助記憶装置２４、通信部２５、およびバスを備える。本実施の形態のサーバ２０は、汎用のパソコンまたはデータセンタに設置された大型計算機等である。
【００１８】
サーバＣＰＵ２２は、本実施の形態に係るプログラムを実行する演算制御装置である。サーバＣＰＵ２２には、一または複数のＣＰＵまたはマルチコアＣＰＵ等が使用される。サーバＣＰＵ２２は、バスを介してサーバ２０を構成するハードウェア各部と接続されている。
【００１９】
主記憶装置２３は、ＳＲＡＭ（Static Random Access Memory）、ＤＲＡＭ（Dynamic Random Access Memory）、フラッシュメモリ等の記憶装置である。主記憶装置２３には、サーバＣＰＵ２２が行う処理の途中で必要な情報およびサーバＣＰＵ２２で実行中のプログラムが一時的に保存される。
【００２０】
補助記憶装置２４は、ＳＲＡＭ、フラッシュメモリ、ハードディスクまたは磁気テープ等の記憶装置である。補助記憶装置２４には、サーバＣＰＵ２２に実行させるプログラム、事象ＤＢ４１、時系列ＤＢ４２、組み合わせ回数ＤＢ４３、発生数ＤＢ４４および組み合わせ確率ＤＢ４５等、プログラムの実行に必要な各種情報が保存される。通信部２５は、ネットワーク１９との通信を行うインターフェイスである。
【００２１】
クライアント３０は、クライアントＣＰＵ３２、主記憶装置３３、補助記憶装置３４、通信部３５、入力部３６、表示部３７およびバスを備える。本実施の形態のクライアント３０は、汎用のパソコン、タブレットまたはスマートフォン等である。
【００２２】
クライアントＣＰＵ３２は、本実施の形態に係るプログラムを実行する演算制御装置である。クライアントＣＰＵ３２には、一または複数のＣＰＵまたはマルチコアＣＰＵ等が使用される。クライアントＣＰＵ３２は、バスを介してクライアント３０を構成するハードウェア各部と接続されている。
【００２３】
主記憶装置３３は、ＳＲＡＭ、ＤＲＡＭ、フラッシュメモリ等の記憶装置である。主記憶装置３３には、クライアントＣＰＵ３２が行う処理の途中で必要な情報およびクライアントＣＰＵ３２で実行中のプログラムが一時的に保存される。
【００２４】
補助記憶装置３４は、ＳＲＡＭ、フラッシュメモリ、ハードディスクまたは磁気テープ等の記憶装置である。補助記憶装置３４には、クライアントＣＰＵ３２に実行させるプログラムおよびプログラムの実行に必要な各種情報が保存される。通信部３５は、ネットワーク１９との通信を行うインターフェイスである。
【００２５】
図３は、事象ＤＢ４１のレコードレイアウトを示す説明図である。事象ＤＢ４１は、記号と本実施の形態のプログラムが処理する被験者の状態の変化の内容とを関連付けるＤＢである。事象ＤＢ４１は、記号フィールドおよび内容フィールドを備える。記号フィールドには、文字または数値等で示す記号が記録されている。内容フィールドには、記号フィールドに記録された記号が示す被験者の状態の変化の内容が記録されている。なお、図３では、「ベッドから降りた」等の被験者の動作を記録したレコードを例示しているが、たとえば「寝室の照明が消えた」「室温が２８度を超えた」等、被験者の周囲の環境変化を内容フィールドに記録したレコードが含まれていても良い。また、たとえば「歩行時間が１０分を超えた」等、被験者の状態の継続時間の経過を内容フィールドに記録したレコードが含まれていても良い。以後の説明では、このように継続時間の経過を示す事象の場合にも、事象が発生した、または事象が生じたと表現する場合がある。記号ＤＢ４１は、１つの記号について、１つのレコードを有する。
【００２６】
図４は、時系列ＤＢ４２のレコードレイアウトを示す説明図である。時系列ＤＢ４２は、発生した事象を示す記号と、その事象に関連付けられた時刻、たとえばその事象が発生した時刻とを関連づけるＤＢである。時系列ＤＢ４２は、時刻フィールドおよび事象フィールドを備える。時刻フィールドには、日時を示す数値が記録されている。説明を簡単にするために、以後の説明では時刻フィールドに記録されている数字の単位に「秒」を使用する。なお、時刻フィールドには、たとえばマイクロ秒またはナノ秒など、同時に複数の事象が発生しない程度に細かい単位で時刻を識別できる数値を使用する。
【００２７】
事象フィールドには、時刻フィールドに記録された時刻に発生した被験者の状態の変化を示す記号が記録されている。事象フィールドに記録された記号をキーとして事象ＤＢ４１を検索することにより、実際に発生した事象の内容を知ることができる。時系列ＤＢ４２は、事象に対応する１つの時刻について１つのレコードを有する。時系列ＤＢ４２のレコードは、時刻フィールドの昇順に配列されている。
【００２８】
図５は、組み合わせ回数ＤＢ４３のレコードレイアウトを示す説明図である。組み合わせ回数ＤＢ４３は、第１事象の後、所定の時間内に第２事象が発生した回数を記録するＤＢである。ここで、所定の時間は第１事象が発生した事の影響を受けて、第２事象が発生したという因果関係または相関関係が存在し得る時間をいう。以後の説明ではこの所定の時間を影響時間と呼ぶ。影響時間の長さは、たとえば３０秒間である。
【００２９】
組み合わせ回数ＤＢ４３は、第１事象フィールドおよび第２事象フィールドを備える。第１事象フィールドは、図３を使用して説明した事象ＤＢ４１の記号フィールドに対応するフィールドを備える。第２事象フィールドには、図３を使用して説明した事象ＤＢ４１の記号フィールドに対応する記号が記録されている。組み合わせ回数ＤＢ４３は、事象ＤＢ４１の記号フィールドと同数のレコードを有する。組み合わせ回数ＤＢ４３は、時系列ＤＢ４２を解析して作成する。
【００３０】
たとえば、図５中の第２事象フィールドがＡのレコードの、Ｄフィールドには、１７９という数字が記録されている。これは、Ｄの事象が発生した後、所定の影響時間内にＡの事象が発生した回数が１７９回である事を示している。ここで、影響時間は、発生した事象が他の事象に影響を与える可能性のある時間である。影響時間は、あらかじめ補助記憶装置２４に記憶されている。本実施の形態においては、影響時間が２０秒の場合を例にして説明する。
【００３１】
図６は、組み合わせ時刻ＤＢのレコードレイアウトを示す説明図である。組み合わせ時刻ＤＢは、第１事象の後、所定の影響時間内に第２事象が発生した時刻を記録するＤＢである。組み合わせ時刻ＤＢは、第１事象フィールド、第２事象フィールドおよび時刻フィールドを備える。第１事象フィールドには、第１事象を示す記号が記録されている。第２事象フィールドには、第２事象を示す記号が記録されている。時刻フィールドには、第２事象が発生した時刻が記録されている。組み合わせ時刻ＤＢは、影響時間内に発生した第１事象と第２事象の一つの組み合わせについて、１つのレコードを有する。
【００３２】
図７は、発生数ＤＢ４４のレコードレイアウトを示す説明図である。発生数ＤＢ４４は、各事象とその発生回数とを関連づけるＤＢである。発生数ＤＢ４４は、事象フィールドと発生数フィールドを備える。事象フィールドには、図３を使用して説明した事象ＤＢ４１の記号フィールドに対応する記号が記録されている。発生数フィールドには、各事象の発生回数が記録されている。発生数ＤＢ４４は、事象ＤＢ４１の記号フィールドと同数のレコードを有する。発生数ＤＢ４４は、時系列ＤＢ４２を解析して作成する。
【００３３】
図８は、組み合わせ確率ＤＢ４５のレコードレイアウトを示す説明図である。組み合わせ確率ＤＢ４５は、第１事象の後、所定の影響時間内に第２事象が発生した確率を記録するＤＢである。組み合わせ確率ＤＢ４５は、第１事象フィールドおよび第２事象フィールドを備える。第１事象フィールドは、図３を使用して説明した事象ＤＢ４１の記号フィールドに対応するフィールドを備える。第２事象フィールドには、図３を使用して説明した事象ＤＢ４１の記号フィールドに対応する記号が記録されている。組み合わせ回数ＤＢ４３は、事象ＤＢ４１の記号フィールドと同数のレコードを有する。組み合わせ確率ＤＢ４５は、組み合わせ回数ＤＢ４３および発生数ＤＢ４４の組み合わせを用いて作成する。
【００３４】
たとえば、図８中の第２事象フィールドがＡのレコードの、Ｃフィールドには、１４％という数字が記録されている。これは、図５に示すＤの事象が発生した後、所定の影響時間内にＡの事象が発生した回数である１７９回と、図７に示すＤの事象が発生した回数１３２４回との比をパーセントで表示した値である。
【００３５】
図９は、窓ＤＢのレコードレイアウトを示す説明図である。窓ＤＢは、時刻フィールドに記録された時間が影響時間の範囲内であるレコードを、時系列ＤＢ４２から取り出したＤＢである。窓列ＤＢは、時刻フィールドおよび事象フィールドを備える。時刻フィールドには、日時を示す数値が記録されている。時系列ＤＢ４２は、事象に対応する１つの時刻について１つのレコードを有する。窓ＤＢは、時系列ＤＢ４２を基に随時作成される。
【００３６】
図１０から図１３は、事象の発生状態の例を示す説明図である。図１０から図１３を使用して、本実施の形態で解析する事象の例を説明する。図１０から図１３の横軸は時間である。縦軸は発生した事象の記号を示す。黒丸は、横軸で示す時刻に、縦軸で示す事象が発生したことを示す。図１０から図１３は、図４を使用して説明した時系列ＤＢ４２に記録された情報を図で表現したものである。
【００３７】
図１０は、０秒から２００秒までの範囲の時間における事象の発生状態を示す。本実施の形態においては、２０秒付近、１１０秒付近および１７０秒付近の、影響時間である２０秒よりも短い時間帯に事象が集中している。各々の事象が集中した時間帯同士は、影響時間である２０秒よりも離れている。
【００３８】
図１１は、図１０の横軸が１０秒から２０秒の範囲を拡大した図である。図１１に黒丸で示す９個の事象の集合は、影響時間の範囲内に発生しているので、１つの事象と、その後に発生した事象との間に何らかの因果関係または相関関係が存在する可能性がある。また、単なる偶然で近接した時間に複数の事象が発生した可能性もある。数多くのデータを収集して解析した場合に、影響時間内に前後して発生する確率が高い事象の間には、相関関係または因果関係が存在する可能性が高いと考えられる。影響時間内に前後して発生する事象の発生確率を算出する方法を以下に説明する。
【００３９】
図１０に示すように、図１１に黒丸で示す９個の事象の集合は、集合外の事象とは影響時間以上の時間が離れている。したがって、これらの９個の事象は、集合外の事象の発生には影響を与えず、また集合外の事象の発生からの影響も受けないと推定できる。したがって、図１１に示す９個の事象の間の関係を総当たりで調べることにより、１０秒から２０秒の範囲のデータの解析を行える。このような、影響時間よりも短く、しかも集合外の事象とは影響時間以上の時間が離れている、すなわち隔離されている事象の集合を、以後の説明では完全隔離集合と呼ぶ。
【００４０】
因果関係または相関関係の存在し得る事象の組み合わせの数え方について、具体的に説明する。１１秒に発生しているＱの後、影響時間の範囲内では「Ｒ、Ｓ、Ｘ、Ｕ、Ｗ、Ｔ、Ｚ、Ｖ」の各イベントが発生している。したがって、サーバＣＰＵ２２は、図５に示す組み合わせ回数ＤＢ４３の第１事象がＱ、第２事象が「Ｒ、Ｓ、Ｘ、Ｕ、Ｗ、Ｔ、Ｚ、Ｖ」のフィールドに、各々１を加算する。同様に１２秒に発生しているＲの後、影響時間の範囲内では「Ｓ、Ｘ、Ｕ、Ｗ、Ｔ、Ｚ、Ｖ」の各イベントが発生している。したがって、サーバＣＰＵ２２は、図５に示す組み合わせ回数ＤＢ４３の第１事象がＲ、第２事象が「Ｓ、Ｘ、Ｕ、Ｗ、Ｔ、Ｚ、Ｖ」のフィールドに、各々１を加算する。このように、サーバＣＰＵ２２は、完全隔離集合から時順に２つのイベントを繰り返し抽出し、その２つのイベントの発生回数を繰り返しカウントし、その発生回数を組み合わせ回数ＤＢ４３に記録する処理を、全ての完全隔離集合に対して行う。
【００４１】
次に、集合外の事象とは影響時間以上の時間が離れている、すなわち集合外の事象とは隔離されているが、集合内の最初の事象から最後の事象までの時間が影響時間よりも長い事象の集合の場合について説明する。このような集合を、以後の説明では準隔離集合と呼ぶ。図１２および図１３は、準隔離集合の例を示す。準隔離集合の場合にも、集合外の事象の発生には影響を与えず、また集合外の事象の発生からの影響も受けないと推定する。さらに、たとえば４９２秒に発生している事象Ｚと、５２６秒に発生している事象Ｙとの間は、影響時間である２０秒よりも長い時間離れているので、両者の間には因果関係も相関関係も無いと推定できる。
【００４２】
このような準隔離集合の場合に、組み合わせ回数ＤＢ４３に第１事象と第２事象との組み合わせの回数を記録する方法について説明する。まず、サーバＣＰＵ２２は、図１２に示すように１番目の事象から影響時間内の事象を抽出した窓ＤＢを作成する。作成した窓ＤＢの例を図９に示す。サーバＣＰＵ２２は、組み合わせ回数ＤＢ４３の第１事象が窓ＤＢ内の最初のレコードの事象であるＺ、第２事象が窓ＤＢ内の「Ｖ、Ｑ、Ｒ」のフィールドに、各々１を加算する。
【００４３】
その後、サーバＣＰＵ２２は、図１３に示すように２番目の事象から影響時間内の事象を抽出した窓ＤＢを作成する。サーバＣＰＵ２２は、組み合わせ回数ＤＢ４３の第１事象が窓ＤＢ内の最初のレコードの事象であるＶ、第２事象が窓ＤＢ内の「Ｑ、Ｒ、Ｙ」のフィールドに、各々１を加算する。このように窓ＤＢを作成する位置を時間軸上で順次ずらしていくことにより、サーバＣＰＵ２２は、準隔離集合内で因果関係または相関関係のある可能性のある組み合わせを組み合わせ回数ＤＢ４３に記録する。サーバＣＰＵ２２は、すべての準隔離集合について以上の操作を繰り返す。
【００４４】
以上の操作により、サーバＣＰＵ２２は、時系列ＤＢ４２に記録された事象のうち、影響時間内の事象の組み合わせを全て組み合わせ回数ＤＢ４３に記録することができる。
【００４５】
さらにサーバＣＰＵ２２は、時系列ＤＢ４２に記録された各事象の数を数え、発生数ＤＢ４４に記録する。図７に示す発生数ＤＢ４４は、時系列ＤＢ４２に記録されたＡの事象は２１３２回、Ｂの事象は５０２１回であることを示している。
【００４６】
サーバＣＰＵ２２は、組み合わせ回数ＤＢ４３の各レコードのＡフィールドに記録された値と、発生数ＤＢ４４のＡのレコードの発生回数フィールドに記録された値との比を求め、組み合わせ確率ＤＢ４５の対応するフィールドに記録する。Ｂフィールド以降も同様に比を求めることにより、サーバＣＰＵ２２は組み合わせ確率ＤＢ４５を作成する。組み合わせ確率ＤＢ４５には、第１事象が発生した場合に、影響時間内に第２事象が発生する確率が記録されている。
【００４７】
図１４は、プログラムの処理の流れを示すフローチャートである。図１４に示すプログラムは、時系列ＤＢ４２からレコードを取得して、影響時間内に２つの事象の組み合わせが発生する確率を算出するプログラムである。図１４を使用して、本実施の形態のプログラムの処理の流れを説明する。
【００４８】
サーバＣＰＵ２２は、組み合わせ回数ＤＢ４３および組み合わせ時刻ＤＢを初期化する（ステップＳ５０１）。すなわちサーバＣＰＵ２２は組み合わせ回数ＤＢ４３の各フィールドの値を初期値である０に設定する。さらに、サーバＣＰＵ２２は、組み合わせ時刻ＤＢのレコードを全て削除する。
【００４９】
サーバＣＰＵ２２は、時系列ＤＢ４２内の解析を開始する位置および終了する位置を取得する（ステップＳ５０２）。ここで、サーバＣＰＵ２２は解析を開始する位置および終了する位置を、被験者の状態を解析する医師等のユーザによる入力を通信部２５、ネットワーク１９、通信部３５を介して入力部３６から取得する。サーバＣＰＵ２２は、グループ取得のサブルーチンを起動する（ステップＳ５０３）。グループ取得のサブルーチンは、時系列ＤＢ４２内のデータから、１つ前のイベントと１つ後のイベントの間の時間差が影響時間以上である場合に、その２つのイベントを用いてグループを取得するサブルーチンである。グループ取得のサブルーチンの処理の流れは後述する。
【００５０】
サーバＣＰＵ２２は、取得したグループの最初のイベントと最後のイベントとの間の時間が影響時間以下であるか否かを判定する（ステップＳ５０４）。影響時間以下である場合は（ステップＳ５０４でＹＥＳ）、サーバＣＰＵ２２は完全隔離カウントのサブルーチンを起動する（ステップＳ５０５）。完全隔離カウントのサブルーチンは、完全隔離集合内のイベントの組み合わせを組み合わせ回数ＤＢ４３に記録するサブルーチンである。完全隔離カウントのサブルーチンの処理の流れは後述する。
【００５１】
影響時間より長い場合は（ステップＳ５０４でＮＯ）、サーバＣＰＵ２２は準隔離カウントのサブルーチンを起動する（ステップＳ５０６）。準隔離カウントのサブルーチンは、準隔離集合内のイベントの組み合わせを組み合わせ回数ＤＢ４３に記録するサブルーチンである。準隔離カウントのサブルーチンの処理の流れは後述する。
【００５２】
ステップＳ５０５またはステップＳ５０６の終了後、サーバＣＰＵ２２は時系列ＤＢ４２の解析を終了したか否かを判定する（ステップＳ５０７）。サーバＣＰＵ２２は、解析を終了する位置を、前述のとおりステップＳ５０２で取得する。終了していないと判定した場合は（ステップＳ５０７でＮＯ）、サーバＣＰＵ２２はステップＳ５０３に戻る。終了したと判定した場合は（ステップＳ５０７でＹＥＳ）、サーバＣＰＵ２２はステップＳ５０２で取得した開始時刻から終了時刻までの間の各事象の数を数えて発生数ＤＢ４４を作成する（ステップＳ５０８）。サーバＣＰＵ２２は、組み合わせ回数ＤＢ４３と発生数ＤＢ４４から第１事象が発生した場合に影響時間内に第２事象が発生する確率を算出して、組み合わせ確率ＤＢ４５に記録する（ステップＳ５０９）。サーバＣＰＵ２２は、以上の処理で作成した組み合わせ確率ＤＢ等を通信部２５、ネットワーク１９および通信部３５を介してクライアント３０の表示部３７に表示する（ステップＳ５１０）。表示の例については後述する。その後、サーバＣＰＵ２２は処理を終了する。
【００５３】
図１５は、グループ取得のサブルーチンの処理の流れを示すフローチャートである。グループ取得のサブルーチンは、時系列ＤＢ４２内のデータから、一つ前および一つ後ろの事象との間の時間が影響時間以上離れた事象のグループを取得するサブルーチンである。
【００５４】
サーバＣＰＵ２２は、カウンタＩを開始位置に設定する（ステップＳ５２１）。ここで開始位置は、時系列ＤＢ４２中の本サブルーチンによる処理を開始する最初のレコードを示す番号である。初めて本サブルーチンを実行する場合には、開始位置はユーザによる入力を受け付けた解析を開始する時間に対応する時系列ＤＢ４２内のレコードの番号である。２回目以降に本サブルーチンを実行する場合には、開始位置は前回の本サブルーチンの実行終了時に補助記憶装置２４に記録した値である。
【００５５】
サーバＣＰＵ２２は、時系列ＤＢ４２からＩ番目のレコードを取得する（ステップＳ５２２）。サーバＣＰＵ２２は、時系列ＤＢ４２からＩ＋１番目のレコードを取得する（ステップＳ５２３）。サーバＣＰＵ２２は、Ｉ＋１番目のレコードとＩ番目のレコードとの時間差が影響時間より大きいか否かを判定する（ステップＳ５２４）。時間差が影響時間以下であると判定した場合には（ステップＳ５２４でＮＯ）、サーバＣＰＵ２２はカウンタＩに１を加算する（ステップＳ５２５）。その後、サーバＣＰＵ２２はステップＳ５２３に戻る。
【００５６】
時間差が影響時間より大きいと判定した場合は（ステップＳ５２４でＹＥＳ）、サーバＣＰＵ２２はステップＳ５２１で使用した開始位置に対応するレコードからＩ番目のレコードまでを１つのグループに定める（ステップＳ５２６）。サーバＣＰＵ２２は、補助記憶装置２４に、開始位置がＩ＋１である旨を記録する（ステップＳ５２７）。サーバＣＰＵ２２は、その後処理を終了する。
【００５７】
図１６は、完全隔離カウントのサブルーチンの処理の流れを示すフローチャートである。完全隔離カウントのサブルーチンは、完全隔離集合内のイベントの組み合わせを組み合わせ回数ＤＢ４３に記録するサブルーチンである。
【００５８】
サーバＣＰＵ２２は、カウンタＪを初期値１に設定する（ステップＳ５４１）。サーバＣＰＵ２２は、グループ内のＪ番目の事象を第１事象に設定する（ステップＳ５４２）。サーバＣＰＵ２２はカウンタＫをＪ＋１に設定する（ステップＳ５４３）。サーバＣＰＵ２２は、グループ内のＫ番目の事象を第２事象に設定する（ステップＳ５４４）。サーバＣＰＵ２２は、組み合わせ回数ＤＢ４３の対応するフィールド、すなわち第２事象のレコードの第１事象のフィールドに１を加算する（ステップＳ５４５）。サーバＣＰＵ２２は、組み合わせ時刻ＤＢに第１事象、第２事象および第２事象に関連付けられた時刻を記録したレコードを追加する（ステップＳ５４６）。
【００５９】
サーバＣＰＵ２２は、第２事象が終了したか否かを判定する（ステップＳ５４７）。ここで、グループ内の最後の事象が第２事象である場合に、サーバＣＰＵ２２は第２事象が終了したと判定する。第２事象が終了していないと判定した場合は（ステップＳ５４７でＮＯ）、サーバＣＰＵ２２はカウンタＫに１を加算する（ステップＳ５４８）。その後、サーバＣＰＵ２２はステップＳ５４４に戻る。
【００６０】
第２事象が終了したと判定した場合は（ステップＳ５４７でＹＥＳ）、サーバＣＰＵ２２は第１事象が終了したか否かを判定する（ステップＳ５４９）。ここで、グループ内の最後から二番目の事象が第１事象である場合に、サーバＣＰＵ２２は第１事象が終了したと判定する。第１事象が終了していないと判定した場合は（ステップＳ５４９でＮＯ）、サーバＣＰＵ２２はカウンタＪに１を加算する（ステップＳ５５０）。その後、サーバＣＰＵ２２はステップＳ５４２に戻る。第１事象が終了したと判定した場合は（ステップＳ５４９でＹＥＳ）、サーバＣＰＵ２２は処理を終了する。
【００６１】
図１７は、準隔離カウントのサブルーチンの処理の流れを示すフローチャートである。準隔離カウントのサブルーチンは、準隔離集合内のイベントの組み合わせを組み合わせ回数ＤＢ４３に記録するサブルーチンである。
【００６２】
サーバＣＰＵ２２は、カウンタＪを初期値１に設定する（ステップＳ５６１）。サーバＣＰＵ２２は、窓ＤＢを作成するサブルーチンを起動する（ステップＳ５６２）。窓ＤＢを作成するサブルーチンは、時系列ＤＢ４２から時刻フィールドに記録された時間が影響時間の範囲内であるレコードを取り出して窓ＤＢを作成するサブルーチンである。窓ＤＢを作成するサブルーチンの処理の流れは後述する。
【００６３】
サーバＣＰＵ２２は、カウンタＫをＪと同じ値に設定する（ステップＳ５６３）。サーバＣＰＵ２２は、グループ内のＪ番目の事象を第１事象に設定する（ステップＳ５６４）。サーバＣＰＵ２２はカウンタＫをＫ＋１に設定する（ステップＳ５６５）。サーバＣＰＵ２２は、第２事象が終了したか否かを判定する（ステップＳ５６６）。ここで、Ｋ番目の事象が、窓ＤＢ内に存在しない場合に、サーバＣＰＵ２２は第２事象が終了したと判定する。
【００６４】
第２事象が終了していないと判定した場合は（ステップＳ５６６でＮＯ）、サーバＣＰＵ２２は、窓ＤＢ内のＫ番目の事象を第２事象に設定する（ステップＳ５６７）。サーバＣＰＵ２２は、組み合わせ回数ＤＢ４３の対応するフィールド、すなわち第２事象のレコードの第１事象のフィールドに１を加算する（ステップＳ５６８）。サーバＣＰＵ２２は、組み合わせ時刻ＤＢに第１事象、第２事象および第２事象に関連付けられた時刻を記録したレコードを追加する（ステップＳ５６９）。その後サーバＣＰＵ２２は、ステップＳ５６５に戻る。
【００６５】
第２事象が終了したと判定した場合は（ステップＳ５６６でＹＥＳ）、サーバＣＰＵ２２は第１事象が終了したか否かを判定する（ステップＳ５７０）。ここで、グループ内の最後から二番目の事象が第１事象である場合に、サーバＣＰＵ２２は第１事象が終了したと判定する。第１事象が終了していないと判定した場合は（ステップＳ５７０でＮＯ）、サーバＣＰＵ２２はカウンタＪに１を加算する（ステップＳ５７１）。その後、サーバＣＰＵ２２はステップＳ５６２に戻る。第１事象が終了したと判定した場合は（ステップＳ５７０でＹＥＳ）、サーバＣＰＵ２２は処理を終了する。
【００６６】
図１８および図１９は、窓ＤＢを作成するサブルーチンの処理の流れを示すフローチャートである。窓ＤＢを作成するサブルーチンは、時系列ＤＢ４２から時刻フィールドに記録された時間が影響時間の範囲内であるレコードを取り出して窓ＤＢを作成するサブルーチンである。
【００６７】
サーバＣＰＵ２２は、サブルーチンの実行が初回であるか否かを判定する（ステップＳ６０１）。初回である場合には（ステップＳ６０１でＹＥＳ）、サーバＣＰＵ２２は窓ＤＢのレコードを全て削除することにより、窓ＤＢを初期化する（ステップＳ６０２）。サーバＣＰＵ２２はカウンタＭを１に設定する（ステップＳ６０３）。サーバＣＰＵ２２は、時系列ＤＢ４２のＪ番目のレコードを窓ＤＢに複写する（ステップＳ６０４）。ここでカウンタＪは呼び出し元のサブルーチンで設定した窓ＤＢの作成を開始するレコードの番号である。
【００６８】
サーバＣＰＵ２２は、時系列ＤＢ４２からＪ＋Ｍ番目のレコードの時刻フィールドに記録された時刻を取得する（ステップＳ６０５）。サーバＣＰＵ２２は、Ｊ番目のレコードとＪ＋Ｍ番目のレコードとの間の時間が影響時間以下であるか否かを判定する（ステップＳ６０６）。影響時間以下であると判定した場合は（ステップＳ６０６でＹＥＳ）、サーバＣＰＵ２２は時系列ＤＢ４２のＪ＋Ｍ番目のレコードを窓ＤＢに複写する（ステップＳ６０７）。サーバＣＰＵ２２は、カウンタＭに１を加算する（ステップＳ６０８）。サーバＣＰＵ２２はステップＳ６０５に戻る。影響時間を超えると判定した場合は（ステップＳ６０６でＮＯ）、サーバＣＰＵ２２は処理を終了する。
【００６９】
サブルーチンの実行が２回目以降である場合は（ステップＳ６０１でＮＯ）、サーバＣＰＵ２２は窓ＤＢから１番目のレコードを削除する（ステップＳ６１１）。サーバＣＰＵ２２は、２番目のレコードを１番目に、３番目のレコードを２番目にと、レコードを１つづつずらす（ステップＳ６１２）。ずらす操作は、補助記憶装置２４または主記憶装置２３内のデータを記憶するメモリのアドレスの変更により行なう。
【００７０】
サーバＣＰＵ２２は、カウンタＭを窓ＤＢ内のレコード数に設定する（ステップＳ６１３）。サーバＣＰＵ２２は、カウンタＭに１を加算する（ステップＳ６１４）。サーバＣＰＵ２２は、時系列ＤＢ４２からＪ＋Ｍ番目のレコードの時刻フィールドに記録された時刻を取得する（ステップＳ６１５）。サーバＣＰＵ２２は、Ｊ番目のレコードとＪ＋Ｍ番目のレコードとの間の時間が影響時間以下であるか否かを判定する（ステップＳ６１６）。影響時間以下であると判定した場合は（ステップＳ６１６でＹＥＳ）、サーバＣＰＵ２２は時系列ＤＢ４２のＪ＋Ｍ番目のレコードを窓ＤＢに複写する（ステップＳ６１７）。サーバＣＰＵ２２はステップＳ６１４に戻る。影響時間を超えると判定した場合は（ステップＳ６１６でＮＯ）、サーバＣＰＵ２２は処理を終了する。
【００７１】
図２０から図２２は、情報処理結果を表示する画面を示す説明図である。図２０から図２２は、入力部３６から受け付けたユーザによる操作に応じて、組み合わせ確率ＤＢ４５または組み合わせ時刻ＤＢに記録された情報をクライアント３０の表示部３７に表示する画面の例である。なお、組み合わせ確率ＤＢ４５または組み合わせ時刻ＤＢからのデータの抽出およびグラフの生成の手順については、既存の様々な手法を使用できるので説明を省略する。
【００７２】
図２０は、組み合わせ確率ＤＢ４５から上位の項目を抽出して表示する画面の例である。画面には、リスト欄５１、分析期間欄５２、ＩＤ（IDentification）欄５３およびデータ欄５５が表示されている。リスト欄５１には、事象ＤＢ４１に記録されているレコードの内容が表示されている。なお、事象ＤＢ４１に記録されているレコードを全て表示部３７に表示しきれない場合には、後述するデータ欄５５に表示されている情報に対応するレコードを抽出してリスト欄５１に表示することが望ましい。
【００７３】
分析期間欄５２は、時系列ＤＢ４２から取り出して解析するデータの範囲の入力を受け付ける欄である。クライアントＣＰＵ３２は、入力部３６を介して分析期間欄５２の入力を受け付け、通信部３５、ネットワーク１９および通信部２５を介してサーバＣＰＵ２２に伝達する。
【００７４】
ＩＤ欄５３は、データを解析する被験者に固有のＩＤの入力を受け付ける欄である。補助記憶装置２４に複数の被験者のデータが記録されている場合には、ＩＤによりどの被験者のデータであるかを区別する。ＩＤは、各ＤＢのファイル名または各ＤＢに設けられたＩＤを記録するフィールドに記録されている。クライアントＣＰＵ３２は、入力部３６を介してＩＤ欄５３の入力を受け付け、通信部３５、ネットワーク１９および通信部２５を介してサーバＣＰＵ２２に伝達する。なお、本実施の形態の情報処理システム１０で特定の被験者のデータのみを取り扱う場合には、ＩＤ欄５３を省略することができる。
【００７５】
データ欄５５は、組み合わせ確率ＤＢ４５中の各フィールドの値が上位のデータの第１事象と第２事象との組み合わせを可視化したグラフである。データ欄５５の横軸は第１事象が発生した際に第２事象が発生した確率を示す。データ欄５５の縦軸は、第１事象と第２事象の組み合わせを示す。たとえば、Ａ→Ｂという記載は、第１事象Ａが発生した場合に、影響時間内に第２事象Ｂが発生した確率を意味している。図２０の画面により、ユーザはどの事象の組み合わせの発生確率が高いかを容易に認識することができる。
【００７６】
図２１は、図２０のリスト欄５１中のＡの事象の選択を受け付けた場合の画面を示す。図２１は、組み合わせ確率ＤＢ４５から所定の事象に関連する上位の項目を抽出して表示する画面の例である。データ欄５５は、組み合わせ確率ＤＢ４５から第１事象または第２事象がＡであるフィールドの値が降順で表示されている。データ欄５５の横軸は第１事象が発生した際に第２事象が発生した確率を示す。データ欄５５の縦軸は、第１事象と第２事象の組み合わせを示す。図２１の画面により、ユーザは特定の事象と組み合わさって発生する確率が高い事象を容易に認識することができる。
【００７７】
図２２は、リスト欄５１中のＡの事象およびＧの事象の選択を順番に受け付けた場合の画面を示す。図２２は、組み合わせ時刻ＤＢに記録されたレコードから、所定の第１事象と第２事象の組み合わせのレコードを抽出して、発生時刻の時系列を可視化したグラフである。データ欄５５には、第１事象がＡ、第２事象がＧである組み合わせが発生した時刻が表示されている。データ欄５５の横軸は、時刻を示す。データ欄５５の縦軸は、指定された順番の事象の発生の有無を示す。図２２の画面により、ユーザは特定の事象の組み合わせがいつ発生しているかを容易に認識することができる。
【００７８】
図２３は、比較例のプログラムの処理の流れを示すフローチャートである。図２４および図２５は、計算時間短縮の効果を示す説明図である。図２３から図２５を使用して、本実施の形態による計算時間短縮の効果について説明する。
【００７９】
図２３は、時系列ＤＢ４２に記録されたレコードを完全隔離集合および不完全隔離集合に分けずに最初のレコードから順次処理する、比較例の処理の流れを示すフローチャートである。図２３を使用して、比較例の処理の流れを説明する。
【００８０】
サーバＣＰＵ２２は、組み合わせ回数ＤＢ４３および組み合わせ時刻ＤＢを初期化する（ステップＳ６４１）。すなわち組み合わせ回数ＤＢ４３の各フィールドの値を初期値である０に設定する。また、組み合わせ時刻ＤＢのレコードを全て削除する。サーバＣＰＵ２２は、時系列ＤＢ４２内の解析を開始する位置および終了する位置を取得する（ステップＳ６４２）。ここで、解析を開始する位置および終了する位置は、被験者の状態を解析する医師等のユーザによる入力を通信部２５、ネットワーク１９、通信部３５を介して入力部３６から取得する。
【００８１】
サーバＣＰＵ２２は準隔離カウントのサブルーチンを起動する（ステップＳ６４３）。準隔離カウントのサブルーチンは、準隔離集合内のイベントの組み合わせを組み合わせ回数ＤＢ４３に記録するサブルーチンである。準隔離カウントのサブルーチンは、図１７を使用して説明したサブルーチンと同一のサブルーチンを使用する。ここで、準隔離カウントのサブルーチンは、ステップＳ６４２で取得した開始位置から終了位置までの時系列ＤＢ４２のレコードを全て処理する。
【００８２】
サーバＣＰＵ２２はステップＳ６４２で取得した開始時刻から終了時刻までの間の各事象の数を数えて発生数ＤＢ４４を作成する（ステップＳ６４４）。サーバＣＰＵ２２は、組み合わせ回数ＤＢ４３と発生数ＤＢ４４から第１事象が発生した場合に第２事象が発生する確率を算出して、組み合わせ確率ＤＢ４５に記録する（ステップＳ６４５）。サーバＣＰＵ２２は、以上の処理で作成した組み合わせ確率ＤＢ等を通信部２５、ネットワーク１９および通信部３５を介してクライアント３０の表示部３７に表示する（ステップＳ６４６）。表示の例は、たとえば図２０から図２２に示す画面である。
【００８３】
図２４は、図１４に示す本実施の形態のフローチャートを使用した場合と、図２３に示す比較例のフローチャートを使用した場合との計算時間の差を示すグラフである。図２４の横軸は、時系列ＤＢ４２に含まれるレコードの数、すなわち処理する事象の数であり、単位は個である。図２４の縦軸は、図２３または図１４のフローチャートを実行する場合にサーバＣＰＵ２２が要する計算時間であり、単位は秒である。事象ＤＢ４１に記録された事象の数は２０個、事象の発生状態は、図１０に示すようにすべての事象を完全隔離集合に分けることができる場合を例にして計算している。
【００８４】
実線は、図１４に示す本実施の形態の処理を行った場合の処理時間、破線は図２３に示す比較例の処理を行った場合の処理時間を示す。本実施の形態の処理時間は、比較例の処理時間に比べて半分以下になっている。
【００８５】
図２５は、図１４に示す本実施の形態のフローチャートを使用した場合と、図２３に示す比較例のフローチャートを使用した場合との計算時間の差を示すグラフである。図２５の横軸は、事象ＤＢ４１に含まれるレコードの数、すなわち処理する事象の種類の数であり、単位は個である。図２５の縦軸は、図２３または図１４のフローチャートを実行する場合にサーバＣＰＵ２２が要する計算時間であり、単位は秒である。時系列ＤＢ４２に記録された事象の数は１０万個、事象の発生状態は、図１０に示すようにすべての事象を完全隔離集合に分けることができる場合を例にして計算している。
【００８６】
実線は、図１４に示す本実施の形態の処理を行った場合の処理時間、破線は図２３に示す比較例の処理を行った場合の処理時間を示す。本実施の形態では、事象の種類が６０個程度の場合には、本実施の形態の処理時間は比較例の処理時間の半分程度、事象の種類が２００個程度の場合には、本実施の形態の処理時間は比較例の処理時間の６割程度になっている。
【００８７】
図２４および図２５より、本実施の形態では時系列ＤＢ４２に記録された事象を影響時間以上離れたグループに分割してから処理することにより、計算時間を大幅に短縮できることがわかる。
【００８８】
計算時間を短縮できる理由について説明する。比較例では、時系列ＤＢ４２中の処理範囲のレコード全体を一つの準隔離集合として取扱い、窓ＤＢを使用して影響時間内の事象の組み合わせを抽出している。窓ＤＢを更新する際には、図１９のステップＳ６１２に示すように、窓ＤＢ内のレコードを１つずつずらす操作を行う。これは、主記憶装置２３または補助記憶装置２４に記憶されたデータの記録位置を変更していく操作であるので、時間を要する。
【００８９】
一方、本実施の形態では時系列ＤＢ４２中の処理範囲のレコードを完全隔離集合および不完全隔離集合に分割する。完全隔離集合の場合は、窓ＤＢを使用する処理が発生しないため、計算時間が短くなる。また、不完全隔離集合の場合も、集合間をまたぐ処理が不要な分、窓ＤＢをずらす操作が少なくなるので、計算時間が短くなる。
【００９０】
本実施の形態によると、多数の事象の発生時刻を記録した時系列データから、関連する事象の組み合わせを効率良く抽出するプログラム等を提供することができる。
【００９１】
図２２に示す事象の組み合わせの発生時刻の表示を行わない場合には、組み合わせ時刻ＤＢの作成を省略することができる。
【００９２】
組み合わせ回数ＤＢ４３および組み合わせ確率ＤＢ４５に第３事象以降のフィールドを設けることにより、３つ以上の事象の組み合わせの発生確率を抽出することができる。
【００９３】
解析対象は、一人の被験者の行動に限定しない。たとえば店舗内での複数の消費者の行動を時系列ＤＢ４２に記録して、本実施の形態の手法により行動の組み合わせを解析することができる。また、解析対象は実世界における被験者の行動に限定しない。たとえばウェブブラウジング、インターネットショッピング等のネットワーク上における被験者の行動を時系列ＤＢ４２に記録して、本実施の形態の手法を使用して行動の組み合わせを解析することができる。
【００９４】
組み合わせ確率ＤＢ４５をクライアント３０の補助記憶装置３４に複写して、たとえばクライアント３０にインストールされた表計算ソフトウェア等の汎用のソフトウェアを使用してグラフ等による可視化を行うようにしても良い。この場合、図１４を用いて説明したプログラムの処理中のステップＳ５１０のデータの表示を省略することができる。
【００９５】
ステップＳ５０９において、サーバＣＰＵ２２は、第２事象が発生した場合に第１事象が発生していた確率を算出して、組み合わせ確率ＤＢ４５に記録しても良い。また、第１事象を基準として算出した場合と、第２事象を基準として算出した場合の二つの組み合わせ確率ＤＢ４５を作成しても良い。この場合には、どちらの組み合わせ確率ＤＢ４５を使用したデータを表示するかについて、ユーザからの入力を受け付けることが望ましい。
【００９６】
［実施の形態２］
本実施の形態は、時系列ＤＢ４２に事象を記録する際にグループ分けを行う情報処理装置等に関する。実施の形態１と共通する部分については、説明を省略する。
【００９７】
図２６は、実施の形態２の時系列ＤＢ４２のレコードレイアウトを示す説明図である。本実施の形態の時系列ＤＢ４２は、発生した事象を示す記号と、その事象に関連する時刻とグループの番号とを関連づけるＤＢである。時系列ＤＢ４２は、時刻フィールド、事象フィールド、時間差フィールドおよびグループフィールドを備える。時刻フィールドには、日時を示す数値が記録されている。
【００９８】
事象フィールドには、時刻フィールドに記録された時刻に発生した被験者の状態の変化を示す記号が記録されている。時間差フィールドには、次のイベントとの間の時間差が記録されている。グループフィールドには、レコードの属するグループの番号が記録されている。時系列ＤＢ４２は、事象に対応する１つの時刻について１つのレコードを有する。時系列ＤＢ４２のレコードは、時刻フィールドの昇順に配列されている。
【００９９】
図２７は、実施の形態２のプログラムの処理の流れを示すフローチャートである。図２７は、サーバＣＰＵ２２が時系列ＤＢ４２にデータを記録する際に実行するプログラムの処理の流れを示す。
【０１００】
サーバＣＰＵ２２は、カウンタＩおよびカウンタＪを初期値１にする（ステップＳ７０１）。ここで、カウンタＩは事象および時刻の取得順序を記録するカウンタである。また、カウンタＪはグループの番号を記録するカウンタである。
【０１０１】
サーバＣＰＵ２２は、ネットワーク１９を介してセンサ制御装置１２、生体センサ１６等から事象と時刻とを取得する（ステップＳ７０２）。サーバＣＰＵ２２はカウンタＩに１を加算する（ステップＳ７０３）。サーバＣＰＵ２２は、ネットワーク１９を介してセンサ制御装置１２、生体センサ１６等から次の事象と時刻とを取得する（ステップＳ７０４）。サーバＣＰＵ２２は、ステップＳ７０２で取得した時刻とステップＳ７０４で取得した時刻との時間差を算出する（ステップＳ７０５）。
【０１０２】
サーバＣＰＵ２２は、Ｉ−１番目に取得した時刻、Ｉ−１番目に取得した事象、ステップＳ７０５で算出した時間差およびカウンタＪを記載したレコードを時系列ＤＢ４２に作成して記録する（ステップＳ７０６）。サーバＣＰＵ２２は、ステップＳ７０５で算出した時間差が影響時間より大きいか否かを判定する（ステップＳ７０７）。時間差が影響時間より大きいと判定した場合は（ステップＳ７０７でＹＥＳ）、サーバＣＰＵ２２はカウンタＪに１を加算する（ステップＳ７０８）。時間差が影響時間以下であると判定した場合（ステップＳ７０７でＮＯ）およびステップＳ７０８の終了後、サーバＣＰＵ２２は処理が終了したか否かを判定する（ステップＳ７０９）。ここで、サーバＣＰＵ２２が処理が終了したと判定するのは、ネットワーク１９を介して事象の入力が終了した旨の指示を取得した場合である。
【０１０３】
処理が終了していないと判定した場合（ステップＳ７０９でＮＯ）、サーバＣＰＵ２２はステップＳ７０３に戻る。処理が終了したと判定した場合（ステップＳ７０９でＹＥＳ）、サーバＣＰＵ２２はＩ番目に取得した時刻、Ｉ番目に取得した事象、ステップＳ７０５で算出した時間差およびカウンタＪを記載したレコードを時系列ＤＢ４２に作成して記録する（ステップＳ７１０）。サーバＣＰＵ２２は、その後処理を終了する。
【０１０４】
図２８は、実施の形態２のプログラムの処理の流れを示すフローチャートである。図２８に示すプログラムは、図２６に示す時系列ＤＢ４２からレコードを取得して、影響時間内に２つの事象の組み合わせが発生する確率を算出するプログラムである。図２８を使用して、本実施の形態の処理の流れを説明する。
【０１０５】
サーバＣＰＵ２２は、組み合わせ回数ＤＢ４３および組み合わせ時刻ＤＢを初期化する（ステップＳ７２１）。すなわちサーバＣＰＵ２２は組み合わせ回数ＤＢ４３の各フィールドの値を初期値である０に設定する。さらに、サーバＣＰＵ２２は、組み合わせ時刻ＤＢのレコードを全て削除する。
【０１０６】
サーバＣＰＵ２２は、時系列ＤＢ４２内の解析を開始する位置および終了する位置を取得する（ステップＳ７２２）。ここで、サーバＣＰＵ２２は解析を開始する位置および終了する位置を、被験者の状態を解析する医師等のユーザによる入力を通信部２５、ネットワーク１９、通信部３５を介して入力部３６から取得する。サーバＣＰＵ２２は、時系列ＤＢ４２のグループフィールドを参照して１グループ分のデータを取得する（ステップＳ７２３）。ここで、１グループ分とは、グループフィールドが同一の値が記録されているレコードを意味する。
【０１０７】
サーバＣＰＵ２２は、取得したグループの最初のイベントと最後のイベントとの間の時間が影響時間以下であるか否かを判定する（ステップＳ７２４）。影響時間以下である場合は（ステップＳ７２４でＹＥＳ）、サーバＣＰＵ２２は完全隔離カウントのサブルーチンを起動する（ステップＳ７２５）。完全隔離カウントのサブルーチンは、完全隔離集合内のイベントの組み合わせを組み合わせ回数ＤＢ４３に記録するサブルーチンである。本実施の形態においては、完全隔離カウントのサブルーチンは図１６を使用して説明したサブルーチンを使用する。
【０１０８】
影響時間より長い場合は（ステップＳ７２４でＮＯ）、サーバＣＰＵ２２は準隔離カウントのサブルーチンを起動する（ステップＳ７２６）。準隔離カウントのサブルーチンは、準隔離集合内のイベントの組み合わせを組み合わせ回数ＤＢ４３に記録するサブルーチンである。本実施の形態においては、準完全隔離カウントのサブルーチンは図１７を使用して説明したサブルーチンを使用する。
【０１０９】
ステップＳ７２５またはステップＳ７２６の終了後、サーバＣＰＵ２２は時系列ＤＢ４２の解析を終了したか否かを判定する（ステップＳ７２７）。サーバＣＰＵ２２は、解析を終了する位置を、前述のとおりステップＳ７２２で取得する。終了していないと判定した場合は（ステップＳ７２７でＮＯ）、サーバＣＰＵ２２はステップＳ７２３に戻る。終了したと判定した場合は（ステップＳ７２７でＹＥＳ）、サーバＣＰＵ２２はステップＳ７２２で取得した開始時刻から終了時刻までの間の各事象の数を数えて発生数ＤＢ４４を作成する（ステップＳ７２８）。サーバＣＰＵ２２は、組み合わせ回数ＤＢ４３と発生数ＤＢ４４から第１事象が発生した場合に第２事象が発生する確率を算出して、組み合わせ確率ＤＢ４５に記録する（ステップＳ７２９）。サーバＣＰＵ２２は、以上の処理で作成した組み合わせ確率ＤＢ４５等を通信部２５、ネットワーク１９および通信部３５を介してクライアント３０の表示部３７に表示する（ステップＳ７３０）。表示の例は前述の図２０から図２２である。その後、サーバＣＰＵ２２は処理を終了する。
【０１１０】
本実施の形態によると、時系列ＤＢ４２に情報を記録する際に、影響時間以上離れた事象のグループに分けるので、その後医師等がデータを解析する際のサーバＣＰＵ２２の動作を高速にする事ができる。
【０１１１】
［実施の形態３］
本実施の形態は、一部の事象を無視することにより準隔離集合を完全隔離集合に分けて処理する情報処理装置等に関する。実施の形態１と共通する部分については、説明を省略する。
【０１１２】
図２９および図３０は、実施の形態３の事象の発生状態の例を示す説明図である。図２９および図３０の横軸は時間である。図２９および図３０の縦軸は発生した事象の記号を示す。黒丸は、横軸で示す時刻に、縦軸で示す事象が発生したことを示す。図２９および図３０を使用して、本実施の形態の概要を説明する。
【０１１３】
図２９は、一つの準隔離集合の事象の発生状態を示す。図２９に示す事象は、隣接する事象との間は影響時間である２０秒以下である。また、図２９の左端の事象とその前の事象との間は、影響時間よりも離れている。同様に、図２９の右端の事象とその後の事象との間も、影響時間よりも離れている。
【０１１４】
１個の事象を無視した場合に、その事象の前の事象とその事象の後の事象との間の間隔が影響時間よりも長くなるように準隔離集合を分けた状態を、図２９の破線の矩形枠で示す。５番目のＵの事象および１５番目のＸの事象を無視した場合に、準隔離集合を影響時間よりも離れた３個のグループに分けることができる。３個のグループのうち、右端および左端のグループは、影響時間よりも短いグループになっている。一方、中央のグループは、影響時間よりも長いグループになっている。以後の説明では、無視する事象を境界事象と呼ぶ。
【０１１５】
図３０は、図２９に破線で示した中央のグループをさらに二つに分けた状態を示す。図３０は、連続する２個の事象を境界事象にした場合に、影響時間よりも間隔が空くようにグループを分けている。分けたグループを、図３０の破線の長円枠で示す。
【０１１６】
以上のようにして、図２９および図３０に示す準隔離集合を、４個の完全隔離集合と４個の境界事象とに分割することができる。仮に、連続する２個の事象を境界事象にした場合でも影響時間よりも長いグループができた場合には、その部分のみ連続する３個の事象を境界事象にして境界事象の数を増やしていくことにより、最終的には準隔離集合に含まれる全ての事象を完全隔離集合と境界事象に分けることができる。この分割の操作に使用するＤＢについて、以下に説明する。
【０１１７】
図３１は、実施の形態３のグループＤＢのレコードレイアウトを示す説明図である。グループＤＢは、準隔離集合を完全隔離集合と境界事象とに分割する際に使用するＤＢである。グループＤＢは、時刻フィールド、事象フィールド、第２時間差フィールドおよびフラグフィールドを有する。
【０１１８】
時刻フィールドには、日時を示す数値が記録されている。事象フィールドには、時刻フィールドに記録された時刻に発生した被験者の状態の変化を示す記号が記録されている。第２時間差フィールドには、２つ後の事象との間の時間差が記録されている。フラグフィールドには、境界事象であることを示すフラグが記録されている。グループＤＢは、事象に対応する１つの時刻について１つのレコードを有する。グループＤＢは、サーバＣＰＵ２２が必要に応じて補助記憶装置２４または主記憶装置２３に一時的に作成するＤＢである。
【０１１９】
サーバＣＰＵ２２は、時系列ＤＢ４２中の本実施の形態の処理を行う準隔離集合に対応する部分を時刻フィールドおよび事象フィールドに複写する。なお、時系列ＤＢ４２と同様にグループＤＢも時刻フィールドのデータの昇順で記録されている。
【０１２０】
サーバＣＰＵ２２は、第２時間差フィールドに、時刻フィールドに記録された値と二レコード後のレコードの時刻フィールドに記録された値との差を記録する。たとえば、図３１の一番上に示すレコードの場合、時刻フィールドには７１２が記録されている。二レコード後、すなわち三番目に示すレコードの時刻フィールドには、７２０が記録されている。したがって、サーバＣＰＵ２２は、一番上に示すレコードの第２時間差フィールドには７２０と７１２との差分である８を記録する。グループＤＢの最後の２つのレコードは、グループＤＢ内に二レコード後のレコードが存在しないため、空欄である。
【０１２１】
図３１のグループＤＢの第２時間差フィールドには、影響時間である２０秒を超える値が楕円で示す２か所に記録されている。サーバＣＰＵ２２は、第２時間差フィールドに影響時間を超える値が記録されているレコードの次のレコードのフラグフィールドに、境界事象を示す「境界」と記録する。
【０１２２】
図３２は、実施の形態３のグループＤＢのレコードレイアウトを示す説明図である。図３２に示すグループＤＢは、図３１に示すグループＤＢに第３時間差フィールドが追加されたＤＢである。
【０１２３】
図３２の例では、サーバＣＰＵ２２は、各境界事象で区切られたグループの最初のレコードの時刻フィールドと最後のレコードの時刻フィールドに記録された値の差が影響時間を超える部分、すなわち中央のグループに含まれるレコードのみを処理の対象とする。サーバＣＰＵ２２は、処理の対象のレコードの第３時間差フィールドに、三レコード後のレコードとの時刻フィールドに記録された値の差を記録する。たとえば、図３２中の時刻フィールドが７４６のレコードの場合、三レコード後の時刻フィールドには、７５５が記録されている。したがって、サーバＣＰＵ２２は、時刻フィールドが７４６であるレコードの第３時間差フィールドには７５５と７４６との差分である９を記録する。処理の対象中の最後の３つのレコードは、処理の対象内に三レコード後のレコードが存在しないため、空欄である。
【０１２４】
図３２のグループＤＢの第３時間差フィールドには、影響時間である２０秒を超える値が楕円で示す１か所に記録されている。サーバＣＰＵ２２は、第３時間差フィールドに影響時間を超える値が記録されているレコードの次のレコードから連続する２つのレコードのフラグフィールドに、境界事象を示す「境界」と記録する。
【０１２５】
なお、グループＤＢには、最初から第３時間差フィールド以降の時間差フィールドを設けても良い。このようにすることにより、処理の途中でＤＢにフィールドを追加する必要がなくなる。
【０１２６】
図３３および図３４は、実施の形態３のプログラムの処理の流れを示すフローチャートである。図３３および図３４を使用して本実施の形態のプログラムの処理の流れを説明する。ステップＳ５０１からステップＳ５０５までおよびステップＳ５０７からステップＳ５１０までについては、図１４を使用して説明した実施の形態１のフローチャートと同一であるので、説明を省略する。
【０１２７】
取得したグループの最初のイベントと最後のイベントとの間の時間が影響時間を超える場合は（ステップＳ５０４でＮＯ）、サーバＣＰＵ２２はグループ分割のサブルーチンを起動する（ステップＳ７４１）。グループ分割のサブルーチンは、図２９から図３１までを使用して説明したように、ステップＳ５０３で取得したグループを、境界事象を定めて分割するサブルーチンである。グループ分割のサブルーチンの処理の流れは後述する。
【０１２８】
サーバＣＰＵ２２は、完全隔離カウントのサブルーチンを起動する（ステップＳ７４２）。完全隔離カウントのサブルーチンは、完全隔離集合内のイベントの組み合わせを組み合わせ回数ＤＢ４３に記録するサブルーチンである。本実施の形態においては、完全隔離カウントのサブルーチンは図１６を使用して説明したサブルーチンを使用する。
【０１２９】
サーバＣＰＵ２２は、ステップＳ５０３で取得したグループの末尾まで処理したか否かを判定する（ステップＳ７４３）。グループの末尾まで処理していないと判定した場合は（ステップＳ７４３でＮＯ）、サーバＣＰＵ２２はステップＳ７４２に戻る。グループの末尾まで処理したと判定した場合は（ステップＳ７４３でＹＥＳ）、サーバＣＰＵ２２はカウンタＭを初期値１に設定する（ステップＳ７４４）。
【０１３０】
サーバＣＰＵ２２は、境界フラグの前後をカウントするサブルーチンを起動する（ステップＳ７４５）。境界フラグの前後をカウントするサブルーチンは、Ｍ番目の境界事象とその前後の影響時間の範囲内の事象との組み合わせを組み合わせ回数ＤＢ４３に記録するサブルーチンである。境界フラグの前後をカウントするサブルーチンの処理の流れは後述する。
【０１３１】
サーバＣＰＵ２２は、ステップＳ５０３で取得したグループの末尾の境界事象まで処理したか否かを判定する（ステップＳ７４６）。処理していないと判定した場合は（ステップＳ７４６でＮＯ）、サーバＣＰＵ２２はカウンタＭに１を加算する（ステップＳ７４７）。サーバＣＰＵ２２はステップＳ７４５に戻る。処理したと判定した場合は（ステップＳ７４６でＹＥＳ）、サーバＣＰＵ２２はステップＳ５０７に進む。
【０１３２】
図３５は、実施の形態３のグループ分割のサブルーチンの処理の流れを示すフローチャートである。グループ分割のサブルーチンは、境界事象を定めてグループを分割するサブルーチンである。図３５を使用してグループ分割のサブルーチンの処理の流れを説明する。
【０１３３】
サーバＣＰＵ２２は、開始位置を１に、カウンタＪを１に設定する（ステップＳ７６１）。開始位置は、一連の処理の適用を開始する最初のレコードである。Ｊは、連続して挿入する境界フラグの数を示すカウンタである。サーバＣＰＵ２２は、ステップＳ５０３で取得したグループに対応するレコードを有するグループＤＢを作成する（ステップＳ７６２）。ここで作成するグループＤＢのレコードレイアウトは、図３１を使用して説明したものである。サーバＣＰＵ２２は、境界フラグ挿入のサブルーチンを起動する（ステップＳ７６３）。境界フラグ挿入のサブルーチンは、グループＤＢの境界フィールドに境界事象を示すフラグを挿入するサブルーチンである。境界フラグ挿入のサブルーチンの処理の流れは後述する。ステップＳ７６３で起動する境界フラグ挿入のサブルーチンは、ステップＳ５０３で取得したグループに含まれる全てのレコードを処理の対象とする。
【０１３４】
サーバＣＰＵ２２は、カウンタＪに１を加算する（ステップＳ７９１）。サーバＣＰＵ２２は、再分割フラグを初期値ＦＡＬＳＥに設定する（ステップＳ７６４）。サーバＣＰＵ２２は、グループＤＢの境界フィールドを検索して、開始位置から数えて最初の境界フラグが記録されたレコードを抽出する（ステップＳ７６５）。サーバＣＰＵ２２は、ステップＳ７６５で抽出したレコードの１つ前のレコードの時刻フィールドに記録された値と、開始位置に対応するレコードの時刻フィールドに記録された値との差から時間差を算出する（ステップＳ７６６）。
【０１３５】
サーバＣＰＵ２２は、時間差が影響時間以下であるか否かを判定する（ステップＳ７６７）。影響時間を超えると判定した場合は（ステップＳ７６７でＮＯ）、サーバＣＰＵ２２は再分割フラグをＴＲＵＥに設定する（ステップＳ７６８）。サーバＣＰＵ２２は、グループＤＢにＪ＋１時間差フィールドを追加する（ステップＳ７６９）。たとえば、Ｊが２である場合には、サーバＣＰＵ２２はステップＳ７６９で第３時間差フィールドを追加する。サーバＣＰＵ２２は、追加したＪ＋１時間差フィールドに、時刻フィールドに記録された値とＪ＋１個後ろのレコードの時刻フィールドに記録された値との差分を記録する。
【０１３６】
サーバＣＰＵ２２は、境界フラグ挿入のサブルーチンを起動する（ステップＳ７７０）。境界フラグ挿入のサブルーチンは、ステップＳ７６３で起動したサブルーチンと同一のサブルーチンである。ステップＳ７７０で起動する境界フラグ挿入のサブルーチンは、境界フラグに対応するレコードからステップＳ７６５で抽出したレコードの１つ前のレコードまでを処理の対象とする。
【０１３７】
ステップＳ７７０の終了後または影響時間以下であると判定した場合（ステップＳ７６７でＹＥＳ）、サーバＣＰＵ２２は開始位置をステップＳ７６５で境界フラグを抽出したレコードの次のレコードを示す番号に設定する（ステップＳ７７１）。
【０１３８】
サーバＣＰＵ２２は、グループの処理が終了したか否かを判定する（ステップＳ７７２）。処理が終了していないと判定した場合は（ステップＳ７７２でＮＯ）、サーバＣＰＵ２２はステップＳ７６５に戻る。処理が終了したと判定した場合は（ステップＳ７７２でＹＥＳ）、サーバＣＰＵ２２は再分割フラグがＦＡＬＳＥであるか否かを判定する（ステップＳ７７３）。再分割フラグがＦＡＬＳＥではない、すなわちＴＲＵＥである場合は（ステップＳ７７３でＮＯ）、サーバＣＰＵ２２はステップＳ７９１に戻る。再分割フラグがＦＡＬＳＥであると判定した場合は（ステップＳ７７３でＹＥＳ）、サーバＣＰＵ２２は処理を終了する。
【０１３９】
図３６は、実施の形態３の境界フラグ挿入のサブルーチンの処理の流れを示すフローチャートである。境界フラグ挿入のサブルーチンは、グループＤＢの境界フィールドに境界事象を示すフラグを挿入するサブルーチンである。図３６を使用して境界フラグ挿入のサブルーチンの処理の流れを説明する。
【０１４０】
サーバＣＰＵ２２は、カウンタＩを初期値１に設定する（ステップＳ７８１）。サーバＣＰＵ２２は、グループＤＢ中の本サブルーチンの処理の対象とするレコードから、Ｉ番目のレコードを取得する（ステップＳ７８２）。サーバＣＰＵ２２は、取得したレコードの一番大きい時間差フィールドの値が影響時間以下か否かを判定する（ステップＳ７８３）。すなわち、第２時間差フィールドまで存在する場合には第２時間差フィールドの値が影響時間以下であるか否かを判定する。また第３時間差フィールドまで存在する場合には、第３時間差フィールドの値が影響時間以下であるか否かを判定する。
【０１４１】
影響時間以下であると判定した場合は（ステップＳ７８３でＹＥＳ）、サーバＣＰＵ２２はカウンタＩに１を加算する（ステップＳ７８４）。影響時間を超えると判定した場合は（ステップＳ７８３でＮＯ）、サーバＣＰＵ２２はＩ＋１番目のレコードからＪ個のレコードのフラグフィールドに境界フラグを記録する（ステップＳ７８５）。ここでＪは本サブルーチンの呼び出し元のプログラムから引数として取得した、連続して挿入する境界フラグの数を示すカウンタである。サーバＣＰＵ２２は、カウンタＩにＪ＋１を加算する（ステップＳ７８６）。
【０１４２】
ステップＳ７８４またはステップＳ７８６の終了後、サーバＣＰＵ２２はレコードの処理が終了したか否かを判定する（ステップＳ７８７）。終了していないと判定した場合は（ステップＳ７８７でＮＯ）、サーバＣＰＵ２２はステップＳ７８２に戻る。終了したと判定した場合は（ステップＳ７８７でＹＥＳ）、サーバＣＰＵ２２は処理を終了する。
【０１４３】
図３７は、実施の形態３の境界フラグの前後をカウントするサブルーチンの処理の流れを示すフローチャートである。境界フラグの前後をカウントするサブルーチンは、Ｍ番目の境界事象とその前後の影響時間の範囲内の事象との組み合わせを組み合わせ回数ＤＢ４３に記録するサブルーチンである。図３７を使用して、境界フラグの前後をカウントするサブルーチンの処理の流れを説明する。
【０１４４】
サーバＣＰＵ２２は、グループＤＢからＭ番目の境界フラグを含むレコードを抽出する（ステップＳ８０１）。ここでＭは本サブルーチンの呼び出し元のプログラムから引数として取得した、処理対象の境界フラグを示すカウンタである。
【０１４５】
サーバＣＰＵ２２は、抽出したレコードの事象フィールドに記録されている事象を第２事象に設定する（ステップＳ８０２）。第２事象は、本サブルーチン内で使用する変数の名称である。サーバＣＰＵ２２は、境界フラグを含むレコードから影響時間の範囲内の前、すなわち過去のレコードを抽出する（ステップＳ８０３）。サーバＣＰＵ２２は、カウンタＪを初期値１に設定する（ステップＳ８０４）。
【０１４６】
サーバＣＰＵ２２は、ステップＳ８０３で抽出したレコードのうちＪ番目のレコードの事象フィールドに記録されている事象を第１事象に設定する（ステップＳ８０５）。第１事象は、本サブルーチン内で使用する変数の名称である。
【０１４７】
サーバＣＰＵ２２は、組み合わせ回ＤＢ４３の第１事象および第２事象に対応するフィールドに１を加算する（ステップＳ８０６）。具体的には、たとえば第１事象がＢ、第２事象がＣである場合には、第２事象がＣのレコードのＢフィールドに１を加算する。サーバＣＰＵ２２は、組み合わせ時刻ＤＢに第１事象、第２事象および第２事象に関連付けられた時刻を記録したレコードを追加する（ステップＳ８０７）。
【０１４８】
サーバＣＰＵ２２は、ステップＳ８０３で抽出した第１事象のレコードの処理が終了したか否かを判定する（ステップＳ８０８）。処理が終了していないと判定した場合は（ステップＳ８０８でＮＯ）、サーバＣＰＵ２２はカウンタＪに１を加算する（ステップＳ８０９）。その後サーバＣＰＵ２２はステップＳ８０５に戻る。
【０１４９】
処理が終了したと判定した場合は（ステップＳ８０８でＹＥＳ）、サーバＣＰＵ２２は、ステップＳ８０１で抽出したレコードの事象フィールドに記録されている事象を第１事象に設定する（ステップＳ８１２）。サーバＣＰＵ２２は、境界フラグを含むレコードから影響時間の範囲内の後、すなわち未来のレコードを抽出する（ステップＳ８１３）。サーバＣＰＵ２２は、カウンタＪを初期値１に設定する（ステップＳ８１４）。
【０１５０】
サーバＣＰＵ２２は、ステップＳ８１３で抽出したレコードのうちＪ番目のレコードの事象フィールドに記録されている事象を第２事象に設定する（ステップＳ８１５）。第１事象は、本サブルーチン内で使用する変数の名称である。
【０１５１】
サーバＣＰＵ２２は、組み合わせ回ＤＢ４３の第１事象および第２事象に対応するフィールドに１を加算する（ステップＳ８１６）。サーバＣＰＵ２２は、組み合わせ時刻ＤＢに第１事象、第２事象および第２事象に関連付けられた時刻を記録したレコードを追加する（ステップＳ８１７）。
【０１５２】
サーバＣＰＵ２２は、ステップＳ８１３で抽出した第２事象のレコードの処理が終了したか否かを判定する（ステップＳ８１８）。処理が終了していないと判定した場合は（ステップＳ８１８でＮＯ）、サーバＣＰＵ２２はカウンタＪに１を加算する（ステップＳ８１９）。処理が終了したと判定した場合は（ステップＳ８１８でＹＥＳ）、サーバＣＰＵ２２は処理を終了する。
【０１５３】
本実施の形態によると、準隔離集合中の事象同士の時間間隔の平均値が影響時間を若干下回る程度である場合に、計算時間が短い情報処理システム１０を提供することができる。
【０１５４】
図３５を使用して説明したグループ分割のサブルーチン中のカウンタＪの上限値をあらかじめ定めておいても良い。この場合、Ｊが上限値に達した場合には、影響時間よりも長いグループが残っていてもグループを分割する処理を停止する。影響時間よりも長いグループ内部の組み合わせは、図１７を使用して説明した準隔離カウントのサブルーチンで処理する。Ｊを適切に設定することにより、計算時間が短い情報処理システム１０を提供することができる。
【０１５５】
［実施の形態４］
本実施の形態は、事象間の間隔を上位から加算することにより、連続する境界事象の最小数を定める情報処理装置等に関する。実施の形態３と共通する部分については、説明を省略する。
【０１５６】
図３８は、実施の形態４の事象の発生状態の例を示す説明図である。図３８の横軸は時間である。図３８の縦軸は発生した事象の記号を示す。黒丸は、横軸で示す時刻に、縦軸で示す事象が発生したことを示す。図３８を使用して、本実施の形態の概要を説明する。
【０１５７】
図３８は、一つの準隔離集合の事象の発生状態を示す。図３８に示す事象は、隣接する事象との間は影響時間である２０秒以下である。また、図３８の左端の事象とその前の事象との間は、影響時間よりも離れている。同様に、図３８の右端の事象とその後の事象との間も、影響時間よりも離れている。
【０１５８】
図３８の場合、各事象の間の間隔のムラが少ないため、１個または連続する２個の事象を境界事象にしても、事象を影響時間より離れたグループに分けることができない。図３８に破線で示すように、連続する３個の事象を境界事象にすることにより、事象を影響時間より間隔が離れた３個のグループに分けることができる。この場合には、事象間の間隔を上位から加算して境界事象の最低限必要な連続数を定めることにより、計算時間を短くすることができる。ここまで説明した操作に使用するＤＢについて、以下に説明する。
【０１５９】
図３９および図４０は、実施の形態４の時間差加算ＤＢのレコードレイアウトを示す説明図である。時間差加算ＤＢは、準隔離集合を完全隔離集合と境界事象とに分割する際に使用するＤＢである。本実施の形態の時間差加算ＤＢは、時刻フィールド、事象フィールド、時間差フィールド、加算数フィールドおよび和フィールドを有する。時間差加算ＤＢは、境界フラグ挿入のサブルーチンを連続何個の境界フラグの挿入から開始するかを定める際に使用するＤＢである。
【０１６０】
時刻フィールドには、日時を示す数値が記録されている。事象フィールドには、時刻フィールドに記録された時刻に発生した被験者の状態の変化を示す記号が記録されている。時間差フィールドには、次の事象との間の時間差が記録されている。加算数フィールドおよび和フィールドについては、後述する。時間差加算ＤＢは、事象に対応する１つの時刻について１つのレコードを有する。時間差加算ＤＢは、サーバＣＰＵ２２が必要に応じて補助記憶装置２４または主記憶装置２３に一時的に作成するＤＢである。
【０１６１】
サーバＣＰＵ２２は、時系列ＤＢ４２中の本実施の形態の処理を行う準隔離集合に対応する部分を時刻フィールドおよび事象フィールドに複写する。図３９に示す時間差加算ＤＢは時刻フィールドのデータの昇順で記録されている。
【０１６２】
サーバＣＰＵ２２は、時間差フィールドに、時刻フィールドに記録された値と次のレコードの時刻フィールドに記録された値との差を記録する。たとえば、図３９の一番上に示すレコードの場合、時刻フィールドには７１２が記録されている。次のレコードの時刻フィールドには、７１７が記録されている。したがって、サーバＣＰＵ２２は、一番上に示すレコードの時間差フィールドには７１７と７１２との差分である５を記録する。グループＤＢの最後の１つのレコードは、グループＤＢ内に次のレコードが存在しないため、空欄である。
【０１６３】
サーバＣＰＵ２２は、時間差フィールドに記録された値をキーとしてレコードを降順に並べ替える。並べ替えた後のグループＤＢの例を図４０に示す。サーバＣＰＵ２２は、一番上のレコード、すなわち時間差フィールドに記録された値が最大であるレコードの加算数フィールドに１を記録する。サーバＣＰＵ２２は、同じレコードの和フィールドに時間差フィールドに記録された値を上位から加算数フィールドに記録された数加算した値を和フィールドに記録する。
【０１６４】
サーバＣＰＵ２２は、加算数フィールドに記録する数値を１づつ加算して、和フィールドを順次求める。たとえば、時刻フィールドの値が７３３のレコードの場合、加算数フィールドの値は４であり、和フィールドの値は時間差フィールドの上位４レコード分を加算した２６である。このレコードで和フィールドに記録された値が影響時間を超えるので、サーバＣＰＵ２２は加算数フィールドおよび和フィールドの処理を停止する。
【０１６５】
以上により、本実施の形態の場合には影響時間を超えるためには事象間の時間差を４以上加算する必要があることがわかる。これは、境界事象が３個以上であることを意味している。したがって、図３６を使用して説明した境界フラグ挿入のサブルーチンを連続３個の境界フラグの挿入から開始することにより、計算時間を短縮することができる。
【０１６６】
図４１は、実施の形態４のグループ分割のサブルーチンの処理の流れを示すフローチャートである。本サブルーチンは、図３５を使用して説明したグループ分割のサブルーチンの代わりに使用するサブルーチンである。図４１を使用して、本実施の形態のグループ分割のサブルーチンの処理の流れを説明する。
【０１６７】
サーバＣＰＵ２２は、境界数算出のサブルーチンを起動する（ステップＳ８２１）。境界数算出のサブルーチンは、境界フラグ挿入のサブルーチンを連続何個の境界フラグの挿入から開始するかを定めるサブルーチンである。境界数算出の処理の流れは後述する。
【０１６８】
サーバＣＰＵ２２は、開始位置を１に、カウンタＪを境界数算出のサブルーチンで算出した境界フラグ数に設定する（ステップＳ８２２）。開始位置は、一連の処理の適用を開始する最初のレコードである。Ｊは、連続して挿入する境界フラグの数を示すカウンタである。サーバＣＰＵ２２は、グループＤＢを作成する（ステップＳ７６２）。ステップＳ７６２およびそれ以降の処理は、図３５を使用して説明した実施の形態３のグループ分割のサブルーチンと同一であるので、説明を省略する。
【０１６９】
図４２は、実施の形態４の境界数算出のサブルーチンの処理の流れを示すフローチャートである。境界数算出のサブルーチンは、境界フラグ挿入のサブルーチンを連続何個の境界フラグの挿入から開始するかを定めるサブルーチンである。図４２を使用して、境界数算出のサブルーチンの処理の流れを説明する。
【０１７０】
サーバＣＰＵ２２は、ステップＳ５０３で取得したグループに対応するレコードを有する時間差加算ＤＢを作成する（ステップＳ８４１）。時間差加算ＤＢは図３９および図４０を使用して説明したＤＢである。ここで、サーバＣＰＵ２２は、時系列ＤＢ４２中の本実施の形態の処理を行う準隔離集合に対応する部分を時刻フィールドおよび事象フィールドに複写する。また、サーバＣＰＵ２２は、時間差加算ＤＢの時間差フィールドに、時刻フィールドに記録された値と、次のレコードの時刻フィールドに記録された値との差を記録する。
【０１７１】
サーバＣＰＵ２２は、時間差加算ＤＢのレコードを時間差フィールドをキーとして降順に並べ替える（ステップＳ８４２）。サーバＣＰＵ２２は、カウンタＪを初期値１に設定する（ステップＳ８４３）。
【０１７２】
サーバＣＰＵ２２は、上位Ｊ個の時間差フィールドを加算して、合計値を算出する（ステップＳ８４４）。サーバＣＰＵ２２は、算出した合計値が影響時間より大きいか否かを判定する（ステップＳ８４５）。影響時間以下であると判定した場合（ステップＳ８４５でＮＯ）、サーバＣＰＵ２２はカウンタＪに１を加算する（ステップＳ８４６）。サーバＣＰＵ２２は、ステップＳ８４４に戻る。影響時間より大きいと判定した場合（ステップＳ８４５でＹＥＳ）、サーバＣＰＵ２２は境界フラグ数をＪ−１に設定する（ステップＳ８４７）。境界フラグ数は、本サブルーチンが呼び出し元に引き渡す引数である。サーバＣＰＵ２２は、その後処理を終了する。
【０１７３】
［実施の形態５］
本実施の形態は、前後の事象の間の時間差が大きくなる事象を境界事象に選択し、その境界事象の前後の事象の時間差が影響時間を下回る場合には、隣接する事象も境界事象に選択することにより、準隔離集合を完全隔離集合に分けて処理する情報処理装置等に関する。実施の形態３と共通する部分については、説明を省略する。
【０１７４】
図４３から図４５は、実施の形態５の事象の発生状態の例を示す説明図である。図４３から図４５の横軸は時間である。図４３から図４５の縦軸は発生した事象の記号を示す。黒丸は、横軸で示す時刻に、縦軸で示す事象が発生したことを示す。図４３から図４５を使用して、本実施の形態の概要を説明する。
【０１７５】
図４３から図４５は、一つの準隔離集合の事象の発生状態を示す。図４３から図４５に示す事象は、隣接する事象との間は影響時間である２０秒以下である。また、図４３から図４５の左端の事象とその前の事象との間は、影響時間よりも離れている。同様に、図４３から図４５の右端の事象とその後の事象との間も、影響時間よりも離れている。
【０１７６】
図４３では、右側の事象との間隔が最も大きい事象が、境界事象に選択されている。この境界事象により、準隔離集合は破線の矩形で示す２個のグループに分離されている。２個のグループの間隔は、影響時間よりも長くなっている。右側のグループは影響時間よりも短いグループに、左側のグループは影響時間よりも長いグループになっている。
【０１７７】
図４４では、図４３の右側のグループについて右側の事象との間隔が最も大きい事象およびそれに隣接する事象が、境界事象に選択されている。この境界事象により、右側のグループは破線の角丸矩形で示す２個のグループに分離されている。２個のグループの間隔は、影響時間よりも長くなっている。右側のグループは影響時間よりも短いグループに、左側のグループは影響時間よりも長いグループになっている。
【０１７８】
図４５では、図４４の左側のグループについて左側の事象との間隔が最も大きい事象およびそれに隣接する事象が、境界事象に選択されている。この境界事象により、左側のグループは点線の矩形で示す２個のグループに分離されている。２個のグループの間隔は、影響時間よりも長くなっている。左右のグループは影響時間よりも短いグループになっている。以上のようにして、図４３から図４５に示す準隔離集合を４個の完全隔離集合と５個の境界事象とに分割することができる。
【０１７９】
仮に、連続する２個の事象を境界事象にした場合でもグループ間の間隔が影響時間よりも短い場合には、連続する境界事象の数を順次増やしていく。この分割の操作に使用するＤＢについて、以下に説明する。
【０１８０】
図４６は、実施の形態５のグループＤＢのレコードレイアウトを示す説明図である。グループＤＢは、準隔離集合を完全隔離集合と境界事象とに分割する際に使用するＤＢである。グループＤＢは、時刻フィールド、事象フィールド、時間差フィールドおよびフラグフィールドを有する。
【０１８１】
時刻フィールドには、日時を示す数値が記録されている。事象フィールドには、時刻フィールドに記録された時刻に発生した被験者の状態の変化を示す記号が記録されている。時間差フィールドには、１つ後の事象との間の時間差が記録されている。フラグフィールドには、境界事象であることを示すフラグが記録されている。グループＤＢは、事象に対応する１つの時刻について１つのレコードを有する。グループＤＢは、サーバＣＰＵ２２が必要に応じて補助記憶装置２４または主記憶装置２３に一時的に作成するＤＢである。
【０１８２】
サーバＣＰＵ２２は、時系列ＤＢ４２中の本実施の形態の処理を行う準隔離集合に対応する部分を時刻フィールドおよび事象フィールドに複写する。なお、時系列ＤＢ４２と同様にグループＤＢも時刻フィールドのデータの昇順で記録されている。
【０１８３】
サーバＣＰＵ２２は、時間差フィールドに、時刻フィールドに記録された値と次のレコードの時刻フィールドに記録された値との差を記録する。たとえば、図４６の一番上に示すレコードの場合、時刻フィールドには７１２が記録されている。次のレコード、すなわち二番目に示すレコードの時刻フィールドには、７１９が記録されている。したがって、サーバＣＰＵ２２は、一番上に示すレコードの時間差フィールドには７１９と７１２との差分である７を記録する。グループＤＢの最後のレコードは、グループＤＢ内に次のレコードが存在しないため、空欄である。
【０１８４】
サーバＣＰＵ２２は、図４６のグループＤＢの時間差フィールドを検索して最大値レコードを抽出する。図４６の場合は、時間差フィールドに記録された値が最大なのは、楕円で示す１５のレコードである。したがって、サーバＣＰＵ２２は、このレコードのフラグフィールドに境界事象であることを示す「境界」と記録する。境界事象の前側のレコードの時刻フィールドは７８３、境界事象の後側のレコードの時刻フィールドは８０７である。したがってサーバＣＰＵ２２は、境界事象前後のグループの間隔は、８０７と７８３との差分である２４であり、２つのグループの間隔は影響時間よりも長いと判定する。また、サーバＣＰＵ２２は、境界事象の後側のグループの長さは８１４と８０７との差分である７であるので、影響時間よりも短いグループであると判定する。同様に、サーバＣＰＵ２２は、境界事象の前側のグループの長さは７８３と７１２との差分である７１であるので影響時間よりも長いグループであると判定する。
【０１８５】
サーバＣＰＵ２２は、前側の長いグループの処理を開始する。サーバＣＰＵ２２は、前側のグループ内で時間差フィールドを検索して最大値のレコードを抽出する。図４６の場合は、時間差フィールドが最も大きいのは、長方形で示す１３のレコードである。したがって、サーバＣＰＵ２２は、このレコードのフラグフィールドに境界事象であることを示す「境界」と記録する。境界事象の前側のレコードの時刻フィールドは７５２、境界事象の後側のレコードの時刻フィールドは７６８である。したがってサーバＣＰＵ２２は、境界フィールド前後のグループの間隔は、７６８と７５２との差分である１６であり、２つのグループの間隔は影響時間よりも短いと判定する。
【０１８６】
サーバＣＰＵ２２は、時間差フィールドに１３と記録されたレコードの前後のレコードの時間差フィールドに記録された値を比較し、大きい方のレコードのフラグフィールドに境界事象であることを示す「境界」と記録する。２個の境界事象の前側のレコードの時刻フィールドは７５２、後側のレコードの時刻フィールドは７７３である。したがってサーバＣＰＵ２２は、境界事象前後のグループの間隔は、７７３と７５２との差分である２１であり、２つのグループの間隔は影響時間よりも長いと判定する。また、サーバＣＰＵ２２は、境界事象の後側のグループの長さは７８３と７７３との差分である６であるので、影響時間よりも短いグループであると判定する。サーバＣＰＵ２２は、境界事象の前側のグループの長さは７５２と７１２との差分である４０であるので影響時間よりも長いグループであると判定する。
【０１８７】
以後、サーバＣＰＵ２２は、影響時間よりも長いグループ内で時間差が最大値のレコードを抽出して境界事象であると判定し、グループ間の間隔が影響時間よりも長くなるまで隣接する事象を境界事象であると判定する操作を繰り返す。以上により、サーバＣＰＵ２２は準隔離集合を４個の完全隔離集合と５個の境界事象とに分割する。
【０１８８】
図４７は、実施の形態５のグループ分割のサブルーチンの処理の流れを示すフローチャートである。本サブルーチンは、図３５を使用して説明したグループ分割のサブルーチンの代わりに使用するサブルーチンである。図４７を使用して、本実施の形態のグループ分割のサブルーチンの処理の流れを説明する。
【０１８９】
サーバＣＰＵ２２は、開始位置を１に、カウンタＪを１に設定する（ステップＳ７６１）。開始位置は、一連の処理の適用を開始する最初のレコードである。Ｊは、連続して挿入する境界フラグの数を示すカウンタである。サーバＣＰＵ２２は、ステップＳ５０３で取得したグループに対応するレコードを有するグループＤＢを作成する（ステップＳ８６１）。ここで作成するグループＤＢのレコードレイアウトは、図４６を使用して説明したものである。サーバＣＰＵ２２は、境界フラグ挿入のサブルーチンを起動する（ステップＳ８６２）。境界フラグ挿入のサブルーチンは、グループＤＢの境界フィールドに境界事象を示すフラグを挿入するサブルーチンである。境界フラグ挿入のサブルーチンの処理の流れは後述する。ステップＳ８６２で起動する境界フラグ挿入のサブルーチンは、ステップＳ５０３で取得したグループに含まれる全てのレコードを処理の対象とする。
【０１９０】
サーバＣＰＵ２２は、カウンタＪに１を加算する（ステップＳ８９１）。サーバＣＰＵ２２は、再分割フラグを初期値ＦＡＬＳＥに設定する（ステップＳ８６４）。サーバＣＰＵ２２は、グループＤＢの境界フィールドを検索して、開始位置から数えて最初の境界フラグが記録されたレコードを抽出する（ステップＳ８６５）。サーバＣＰＵ２２は、ステップＳ７６５で抽出したレコードの１つ前のレコードの時刻フィールドに記録された値と、開始位置に対応するレコードの時刻フィールドに記録された値との差から時間差を算出する（ステップＳ８６６）。
【０１９１】
サーバＣＰＵ２２は、時間差が影響時間以下であるか否かを判定する（ステップＳ８６７）。影響時間を超えると判定した場合は（ステップＳ８６７でＮＯ）、サーバＣＰＵ２２は再分割フラグをＴＲＵＥに設定する（ステップＳ８６８）。サーバＣＰＵ２２は、境界フラグ挿入のサブルーチンを起動する（ステップＳ８７０）。境界フラグ挿入のサブルーチンは、ステップＳ８６２で起動したサブルーチンと同一のサブルーチンである。ステップＳ８７０で起動する境界フラグ挿入のサブルーチンは、境界フラグに対応するレコードからステップＳ８６５で抽出したレコードの１つ前のレコードまでを処理の対象とする。
【０１９２】
ステップＳ８７０の終了後または影響時間以下であると判定した場合（ステップＳ８６７でＹＥＳ）、サーバＣＰＵ２２は開始位置をステップＳ８６５で境界フラグを抽出したレコードの次のレコードを示す番号に設定する（ステップＳ８７１）。
【０１９３】
サーバＣＰＵ２２は、グループの処理が終了したか否かを判定する（ステップＳ８７２）。処理が終了していないと判定した場合は（ステップＳ８７２でＮＯ）、サーバＣＰＵ２２はステップＳ８６５に戻る。処理が終了したと判定した場合は（ステップＳ８７２でＹＥＳ）、サーバＣＰＵ２２は再分割フラグがＦＡＬＳＥであるか否かを判定する（ステップＳ８７３）。再分割フラグがＦＡＬＳＥではない、すなわちＴＲＵＥである場合は（ステップＳ８７３でＮＯ）、サーバＣＰＵ２２はステップＳ８９１に戻る。再分割フラグがＦＡＬＳＥであると判定した場合は（ステップＳ８７３でＹＥＳ）、サーバＣＰＵ２２は処理を終了する。
【０１９４】
図４８は、実施の形態５の境界フラグ挿入のサブルーチンの処理の流れを示すフローチャートである。境界フラグ挿入のサブルーチンは、グループＤＢの境界フィールドに境界事象を示すフラグを挿入するサブルーチンである。図４８を使用して本実施の形態の境界フラグ挿入のサブルーチンの処理の流れを説明する。
【０１９５】
サーバＣＰＵ２２は、処理対象のレコードから時間差フィールドに記録された値が最大のレコードを抽出し、フラグフィールドに境界事象であることを示す「境界」と記録する（ステップＳ９０１）。サーバＣＰＵ２２は、境界事象の前後の時間差を算出する（ステップＳ９０２）。具体的には、境界事象の前後のレコードの時刻フィールドに記録された値の差分を算出する。
【０１９６】
サーバＣＰＵ２２は、算出した時間差が影響時間を超えるか否かを判定する（ステップＳ９０３）。影響時間以下であると判定した場合（ステップＳ９０３でＮＯ）、サーバＣＰＵ２２は境界事象の前後のレコードの時間差フィールドを比較する（ステップＳ９０４）。サーバＣＰＵ２２は、時間差フィールドが大きいと判定した方のレコードのフラグフィールドに、境界事象であることを示す「境界」と記録する（ステップＳ９０５）。サーバＣＰＵ２２はステップＳ９０２に戻る。
【０１９７】
算出した時間差が影響時間を超えると判定した場合（ステップＳ９０３でＹＥＳ）、サーバＣＰＵ２２は処理を終了する。
【０１９８】
本実施の形態によると、ＤＢの並べ替えのような負荷の大きい処理を避けることができるので、計算時間が短い情報処理システム１０を提供することができる。
【０１９９】
［実施の形態６］
本実施の形態は、１日分ごとに組み合わせ回数ＤＢ４３を作成しておく形態に関する。図４９は、実施の形態６の組み合わせ回数ＤＢ４３のレコードレイアウトを示す説明図である。実施の形態１と共通する部分については、説明を省略する。
【０２００】
本実施の形態の組み合わせ回数ＤＢ４３は、第１事象の後、所定の影響時間内に第２事象が発生した回数を１日分づつ記録するＤＢである。組み合わせ回数ＤＢ４３は、日付フィールド、第１事象フィールドおよび第２事象フィールドを備える。日付フィールドには、関連づけられた日付が記録されている。本実施の形態の組み合わせ回数ＤＢ４３は、図５を使用して説明した組み合わせ回数ＤＢ４３に日付フィールドを追加したＤＢである。なお、日付の区切りは０時に限定しない。事象の発生頻度が少ない時間を適宜選択する。
【０２０１】
本実施の形態では、同様に図７を使用して説明した発生数ＤＢ４４および組み合わせ時刻ＤＢにも日付フィールドを追加する。本実施の形態で使用する発生数ＤＢ４４および組み合わせ時刻ＤＢの図示は省略する。
【０２０２】
図５０は、実施の形態６のプログラムの処理の流れを示すフローチャートである。図５０に示すプログラムは、時系列ＤＢ４２からレコードを取得して、影響時間内に２つの事象の組み合わせが発生する回数を１日分ごとに算出するプログラムである。図５０を使用して、本実施の形態のプログラムの処理の流れを説明する。
【０２０３】
サーバＣＰＵ２２はデータを処理する日付を取得する（ステップＳ９２１）。毎日本実施の形態のプログラムの処理を行う場合には、前日の日付とすることが望ましい。サーバＣＰＵ２２は、組み合わせ回数ＤＢ４３および組み合わせ時刻ＤＢを初期化する（ステップＳ９２２）。すなわちサーバＣＰＵ２２は、ステップＳ９２１で取得した日付に対応する組み合わせ回数ＤＢ４３の各フィールドの値を初期値である０に設定する。さらに、サーバＣＰＵ２２は、ステップＳ９２１で取得した日付に対応する組み合わせ時刻ＤＢのレコードを全て削除する。
【０２０４】
サーバＣＰＵ２２は、グループ取得のサブルーチンを起動する（ステップＳ９２３）。グループ取得のサブルーチンは、時系列ＤＢ４２内のデータから、一つ前および一つ後ろの事象との間の時間が影響時間以上離れた事象のグループを取得するサブルーチンである。グループ取得のサブルーチンは、たとえば図１５を使用して説明したサブルーチンを使用する。
【０２０５】
サーバＣＰＵ２２は、取得したグループの最初のイベントと最後のイベントとの間の時間が影響時間以下であるか否かを判定する（ステップＳ９２４）。影響時間以下である場合は（ステップＳ９２４でＹＥＳ）、サーバＣＰＵ２２は完全隔離カウントのサブルーチンを起動する（ステップＳ９２５）。完全隔離カウントのサブルーチンは、完全隔離集合内のイベントの組み合わせを組み合わせ回数ＤＢ４３に記録するサブルーチンである。完全隔離カウントのサブルーチンは、たとえば図１６を使用して説明したサブルーチンを使用する。
【０２０６】
影響時間より長い場合は（ステップＳ９２４でＮＯ）、サーバＣＰＵ２２は準隔離カウントのサブルーチンを起動する（ステップＳ９２６）。準隔離カウントのサブルーチンは、準隔離集合内のイベントの組み合わせを組み合わせ回数ＤＢ４３に記録するサブルーチンである。準隔離カウントのサブルーチンは、たとえば図１７を使用して説明したサブルーチンを使用する。
【０２０７】
ステップＳ９２５またはステップＳ９２６の終了後、サーバＣＰＵ２２は１日分の時系列ＤＢ４２の解析を終了したか否かを判定する（ステップＳ９２７）。サーバＣＰＵ２２は、解析を終了する位置を、前述のとおりステップＳ５０２で取得する。終了していないと判定した場合は（ステップＳ９２７でＮＯ）、サーバＣＰＵ２２はステップＳ９２３に戻る。終了したと判定した場合は（ステップＳ９２７でＹＥＳ）、サーバＣＰＵ２２はステップＳ９２１で取得した日付における各事象の数を数えて発生数ＤＢ４４を作成する（ステップＳ９２８）。サーバＣＰＵ２２は、以上の処理で作成した組み合わせ回数ＤＢ４３、組み合わせ時刻ＤＢおよび発生数ＤＢ４４を補助記憶装置２４に保存する。その後、サーバＣＰＵ２２は処理を終了する。
【０２０８】
本実施の形態によると、１日分ごとの組み合わせ回数ＤＢ４３、組み合わせ時刻ＤＢおよび発生数ＤＢ４４が作成されて補助記憶装置２４に保存されている。したがってデータを解析するユーザは、解析対象の日のデータを取得して汎用の表計算ソフト等に読み込ませる事により、容易にデータの解析を行うことができる。
【０２０９】
［実施の形態７］
図５１は、実施の形態７の情報処理装置の動作を示す機能ブロック図である。情報処理装置は、サーバＣＰＵ２２による制御に基づいて以下のように動作する。取得部６１は、複数の種類の事象と該事象に関連付けられた時刻とに関する情報を含む時系列データを時系列ＤＢ４２から取得する。分割部６２は、時系列データを時刻の間隔が影響時間よりも大きい複数の群に時間軸上で分割する。関連付け部６３は、群の開始時刻から終了時刻までの時間が影響時間以下の場合には、群に含まれる事象の組み合わせと、発生数とを関連付ける。
【０２１０】
［実施の形態８］
実施の形態８は、汎用のコンピュータとプログラム７１とを組み合わせて動作させることにより、情報処理システム１０を実現する形態に関する。図５２は、実施の形態８の情報処理システム１０を構成するサーバ２０およびクライアント３０の構成を示す説明図である。図５２を使用して、本実施の形態の構成を説明する。なお、実施の形態１と共通する部分の説明は省略する。
【０２１１】
サーバ２０は、サーバＣＰＵ２２、主記憶装置２３、補助記憶装置２４、通信部２５、読取部２８およびバスを備える。読取部２８は、たとえば光学ディスク読取装置である。
【０２１２】
プログラム７１は、可搬型記録媒体７２に記録されている。サーバＣＰＵ２２は、読取部２８を介してプログラム７１を読み込み、補助記憶装置２４に保存する。またサーバＣＰＵ２２は、サーバ２０内に実装されたフラッシュメモリ等の半導体メモリ７３に記憶されたプログラム７１を読出しても良い。さらに、サーバＣＰＵ２２は、通信部２５およびネットワーク１９を介して接続される図示しない他のサーバコンピュータからプログラム７１をダウンロードして補助記憶装置２４に保存しても良い。
【０２１３】
プログラム７１は、サーバ２０の制御プログラムとしてインストールされ、主記憶装置２３にロードして実行される。これにより、情報処理システムは上述した情報処理システム１０として機能する。
【０２１４】
各実施例で記載されている技術的特徴（構成要件）はお互いに組み合わせ可能であり、組み合わせすることにより、新しい技術的特徴を形成することができる。
今回開示された実施の形態はすべての点で例示であって、制限的なものでは無いと考えられるべきである。本発明の範囲は、上記した意味では無く、請求の範囲によって示され、請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【０２１５】
（付記１）
事象の種類と該事象が生じた時刻に関する情報を含む時系列データを取得し、
前記時系列データを、一の事象が生じた時刻から該事象の次の事象が生じた時刻までの間の間隔が、双方の事象に因果関係があるとみなす所定時間よりも長い箇所で群に分割する
処理をコンピュータに実行させるプログラム。
【０２１６】
（付記２）
前記群毎に、群に含まれる事象の組み合わせと、該組み合わせの発生数とを関連付ける
処理をコンピュータに実行させる付記１に記載のプログラム。
【０２１７】
（付記３）
前記群の開始時刻から終了時刻までの時間が前記所定時間より長い場合には、該群の最初の事象から、該最初の事象が生じた時刻から該群の中の境界事象の前の事象が生じた時刻までの時間が前記所定時間より短く、該境界事象の前の事象が生じた時刻から、該境界事象の次の事象が生じた時刻までの間隔が該所定時間よりも長い境界事象の前の事象までの第２群を時間軸上で該群から分割し、
該第２群に含まれる事象の組み合わせと、該組み合わせの発生数とを関連付け、
前記境界事象が生じた時刻から前記所定時間の範囲の時刻に生じた事象と前記境界事象との組み合わせと、該組み合わせの発生数とを関連付ける
処理をコンピュータに実行させる付記１または付記２に記載のプログラム。
【０２１８】
（付記４）
前記境界事象は、時間軸上で隣接する事象との時間間隔に基づいて定められる
付記３に記載のプログラム。
【０２１９】
（付記５）
前記境界事象は、時間軸上で隣接する事象との時間間隔に基づいて定められた事象および時間軸上で該事象に連続する事象である
付記３または付記４に記載のプログラム。
【０２２０】
（付記６）
前記境界事象には、時間軸上で隣接する事象との時間間隔が前記群内で最大の事象を含む
付記３から付記５のいずれか一つに記載のプログラム。
【０２２１】
（付記７）
前記群の開始時刻から終了時刻までの時間が前記所定時間より長い場合には、時間軸上で所定の数の境界事象を介して隣接する全ての複数の事象間の時間間隔が所定時間よりも大きい複数の第２群に該群を分割し、
前記第２群の開始時刻から終了時刻までの時間が前記所定時間より長い場合には、前記所定の数を増やして時間軸上で該所定の数の境界事象を介して隣接する全ての複数の事象間の間隔が所定時間よりも大きい複数の第２群に該第２群をさらに分割することを繰り返し、
開始時刻から終了時刻までの時間が前記所定時間より短い前記第２群に含まれる事象の組み合わせと、該組み合わせの発生数とを関連付け、
前記境界事象が生じた時刻から前記所定時間の範囲の時刻に生じた事象と前記境界事象との組み合わせと、該組み合わせの発生数とを関連付ける
処理をコンピュータに実行させる付記１に記載のプログラム。
【０２２２】
（付記８）
前記所定の数は、前記群内の各事象と時間軸上で隣接する事象との時間間隔を長いものから順次加算して前記所定時間を超える最小の時間間隔の数を初期値とする
付記７に記載のプログラム。
【０２２３】
（付記９）
前記群の開始時刻から終了時刻までの時間が前記所定時間より長い場合には、時間軸上で隣接する事象との間隔が該群内で最大である境界事象により、時間軸上で該群を第２群に分割し、
前記第２群の開始時刻から終了時刻までの時間が前記所定時間より長い場合には、前記境界事象に時間軸上で隣接する事象を境界事象に加えることを繰り返し、
開始時刻から終了時刻までの時間が前記所定時間より短い前記第２群に含まれる事象の組み合わせと、該組み合わせの発生数とを関連付け、
前記境界事象が生じた時刻から前記所定時間の範囲の時刻に生じた事象と前記境界事象との組み合わせと、該組み合わせの発生数とを関連付ける
処理をコンピュータに実行させる付記１に記載のプログラム。
【０２２４】
（付記１０）
前記群の開始時刻から終了時刻までの時間が前記所定時間より長い場合には、時間軸上で隣接する事象との間隔が該群内で最大である境界事象により、時間軸上で該群を第２群に分割し、
前記第２群の開始時刻から終了時刻までの時間が前記所定時間より長い場合には、時間軸上で隣接する事象との間隔が該第２群内で最大である境界事象により時間軸上で該第２群をさらに第２群に分割することを繰り返し、
開始時刻から終了時刻までの時間が前記所定時間より短い前記第２群に含まれる事象の組み合わせと、該組み合わせの発生数とを関連付け、
前記境界事象が生じた時刻から前記所定時間の範囲の時刻に生じた事象と前記境界事象との組み合わせと、該組み合わせの発生数とを関連付ける
処理をコンピュータに実行させる付記１に記載のプログラム。
【０２２５】
（付記１１）
前記群または第２群の開始時刻から終了時刻までの時間が前記所定時間より長い場合には、該群または第２群内の各事象を開始時刻とする前記所定時間長さの窓内の時刻に関連付けられた前記事象の組み合わせと該組み合わせの発生数とを関連付ける
処理をコンピュータに実行させる付記１から付記１０のいずれか一つに記載のプログラム。
【０２２６】
（付記１２）
前記組み合わせは、１の事象と該事象よりも後に発生した他の事象との組み合わせである
付記２から付記１１のいずれか一つに記載のプログラム。
【０２２７】
（付記１３）
前記組み合わせごとに、前記発生数の和を算出する処理をコンピュータに実行させる付記２から付記１２のいずれか一つに記載のプログラム。
【０２２８】
（付記１４）
前記時系列データに含まれる前記事象の数を前記種類ごとに算出し、
１の種類の事象の数と、該事象と該事象の後に発生した他の種類の事象とに対応する前記和との比を算出する
処理をコンピュータに実行させる付記１３に記載のプログラム。
【０２２９】
（付記１５）
前記時刻は、前記事象が発生したことが検知された時刻である付記１から付記１４のいずれか一つに記載のプログラム。
【０２３０】
（付記１６）
前記時刻は、前記事象が発生したことが記録された時刻である付記１から付記１４のいずれか一つに記載のプログラム。
【０２３１】
（付記１７）
事象の種類と該事象が生じた時刻に関する情報を含む時系列データを取得し、
前記時系列データを、一の事象が生じた時刻から該事象の次の事象が生じた時刻までの間の間隔が、双方の事象に因果関係があるとみなす所定時間よりも長い箇所で群に分割する、
処理をコンピュータに実行させる情報処理方法。
（付記１８）
事象の種類と該事象が生じた時刻に関する情報を含む時系列データを取得する取得部と、
前記時系列データを、一の事象が生じた時刻から該事象の次の事象が生じた時刻までの間の間隔が、双方の事象に因果関係があるとみなす所定時間よりも長い箇所で群に分割する分割部と
を備える情報処理装置。
【符号の説明】
【０２３２】
１０  情報処理システム
１２  センサ制御装置
１３  ドアセンサ
１４  カメラ
１５  ベッドセンサ
１６  生体センサ
１７  携帯情報機器
１９  ネットワーク
２０  サーバ
２２  サーバＣＰＵ
２３  主記憶装置
２４  補助記憶装置
２５  通信部
２８  読取部
３０  クライアント
３２  クライアントＣＰＵ
３６  入力部
３７  表示部
４１  事象ＤＢ
４２  時系列ＤＢ
４３  組み合わせ回数ＤＢ
４４  発生数ＤＢ
４５  組み合わせ確率ＤＢ
５１  リスト欄
５２  分析期間欄
５３  ＩＤ欄
５５  データ欄
６１  取得部
６２  分割部
６３  計数部
７１  プログラム
７２  可搬型記録媒体
７３  半導体メモリ
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
事象の種類と該事象が生じた時刻に関する情報を含む時系列データを取得し、
前記時系列データを、一の事象が生じた時刻から該事象の次の事象が生じた時刻までの間の間隔が、双方の事象に因果関係があるとみなす所定時間よりも長い箇所で群に分割する
処理をコンピュータに実行させるプログラム。
【請求項２】
前記群毎に、群に含まれる事象の組み合わせと、該組み合わせの発生数とを関連付ける
処理をコンピュータに実行させる請求項１に記載のプログラム。
【請求項３】
前記群の開始時刻から終了時刻までの時間が前記所定時間より長い場合には、該群の最初の事象から、該最初の事象が生じた時刻から該群の中の境界事象の前の事象が生じた時刻までの時間が前記所定時間より短く、該境界事象の前の事象が生じた時刻から、該境界事象の次の事象が生じた時刻までの間隔が該所定時間よりも長い境界事象の前の事象までの第２群を時間軸上で該群から分割し、
該第２群に含まれる事象の組み合わせと、該組み合わせの発生数とを関連付け、
前記境界事象が生じた時刻から前記所定時間の範囲の時刻に生じた事象と前記境界事象との組み合わせと、該組み合わせの発生数とを関連付ける
処理をコンピュータに実行させる請求項１または請求項２に記載のプログラム。
【請求項４】
前記群の開始時刻から終了時刻までの時間が前記所定時間より長い場合には、時間軸上で所定の数の境界事象を介して隣接する全ての複数の事象間の時間間隔が所定時間よりも大きい複数の第２群に該群を分割し、
前記第２群の開始時刻から終了時刻までの時間が前記所定時間より長い場合には、前記所定の数を増やして時間軸上で該所定の数の境界事象を介して隣接する全ての複数の事象間の間隔が所定時間よりも大きい複数の第２群に該第２群をさらに分割することを繰り返し、
開始時刻から終了時刻までの時間が前記所定時間より短い前記第２群に含まれる事象の組み合わせと、該組み合わせの発生数とを関連付け、
前記境界事象が生じた時刻から前記所定時間の範囲の時刻に生じた事象と前記境界事象との組み合わせと、該組み合わせの発生数とを関連付ける
処理をコンピュータに実行させる請求項１または請求項２に記載のプログラム。
【請求項５】
前記所定の数は、前記群内の各事象と時間軸上で隣接する事象との時間間隔を長いものから順次加算して前記所定時間を超える最小の時間間隔の数を初期値とする
請求項４に記載のプログラム。
【請求項６】
前記組み合わせごとに、前記発生数の和を算出する処理をコンピュータに実行させる請求項２から請求項５のいずれか一つに記載のプログラム。
【請求項７】
前記時系列データに含まれる前記事象の数を前記種類ごとに算出し、
１の種類の事象の数と、該事象と該事象の後に発生した他の種類の事象とに対応する前記和との比を算出する
処理をコンピュータに実行させる請求項６に記載のプログラム。
【請求項８】
事象の種類と該事象が生じた時刻に関する情報を含む時系列データを取得し、
前記時系列データを、一の事象が生じた時刻から該事象の次の事象が生じた時刻までの間の間隔が、双方の事象に因果関係があるとみなす所定時間よりも長い箇所で群に分割する、
処理をコンピュータに実行させる情報処理方法。
【請求項９】
事象の種類と該事象が生じた時刻に関する情報を含む時系列データを取得する取得部と、
前記時系列データを、一の事象が生じた時刻から該事象の次の事象が生じた時刻までの間の間隔が、双方の事象に因果関係があるとみなす所定時間よりも長い箇所で群に分割する分割部と
を備える情報処理装置。
【国際調査報告】
2017056179.tif 000055
2017056179.tif 000056
2017056179.tif 000057
2017056179.tif 000058