Skip to contents

この文書では、rSurveyAssignパッケージが想定する調査手続き・割付方法について説明します。

1. 用語

1.1 カテゴリ・スロット・割付可能性

このパッケージは、次の状況を想定して作られています。

  • 1つ以上の「カテゴリ」がある。
  • あるカテゴリは、1つ以上の「スロット」からなる。
  • すべてのカテゴリのすべてのスロットについて調査したい。
  • それぞれの調査対象者は、それぞれのカテゴリについて「割付可能」かそうでないかのいずれかである。
  • それぞれの調査対象者は、それぞれのスロットについて「割付可能」かそうでないかのいずれかである。
  • ある対象者を割り付けることができるカテゴリ・スロットの数には上限がある。

いくつかの例を挙げましょう。

例1

  • 消費者が耐久消費財ブランドについて抱いているイメージを調べたい。
  • 自動車、白物家電、携帯電話、家具のブランドについて調べることにする。
  • 自動車のブランドのうち、トヨタ、日産…などについて調べる。白物家電のうち、日立、パナソニック…などについて調べる。 このように、各製品カテゴリの複数のブランドについて調べる。
  • ある製品カテゴリについて聴取する対象者は、そのカテゴリの使用者に限定したい。
  • ある製品カテゴリのあるブランドについてイメージを聴取する対象者は、そのブランドについて知っている人に限定したい。
  • ある対象者に聴取できるカテゴリの数とブランドの数に上限を設けたい。

この例では、「カテゴリ」は製品カテゴリ(自動車、白物家電、携帯電話、家具)、 「スロット」はブランド (トヨタ、日産…、日立、パナソニック…)に対応しています。 下の表を参照してください。

このパッケージでの用語 この例では
カテゴリ 製品カテゴリ
カテゴリへの割付可能性 その製品カテゴリを使用しているか
割付カテゴリ数の上限 ある人に最大で何カテゴリまで詳しく訊けるか
スロット ブランド
スロットへの割付可能性 そのブランドを知っているか
割付スロット数の上限 ある人に最大で何ブランドまで詳しく訊けるか

例2

  • 数多くの国内観光地について、そこに訪問した人の満足度を調べたい。
  • ある対象者にある観光地について訪問時の満足度を訊くためには、 その対象者はその観光地に訪問したことがなければならない。
  • ある対象者に満足度を訊くことができる観光地の数には上限がある。

この例では、「スロット」は観光地に対応しています。 「カテゴリ」にあたるものはないので、 ひとつのカテゴリが存在し、すべての対象者がそのカテゴリに たいして割付可能であると考えます。 下の表を参照してください。

このパッケージでの用語 この例では
カテゴリ (ひとつだけ存在する)
カテゴリへの割付可能性 (すべての対象者が割付可能)
割付カテゴリ数の上限 (1個)
スロット 観光地
スロットへの割付可能性 その観光地にいったことがあるか
割付スロット数の上限 ある人に最大で何か所までの詳しく訊けるか

これらは例にすぎません。このパッケージは、「カテゴリ」「スロット」「割付可能性」が 具体的に何を指すのかは問いません。また、割り付けたカテゴリとスロットについてなにを聴取するのかも問いません。

1.2 目標対象者数、オープン、クローズド

このパッケージでは、Web調査を想定し、次のように仮定します。

  • 調査対象者の調査への参加は逐次的に行われます。すなわち、全員が同時に回答をはじめるのではなく、まちまちのタイミングで回答をはじめます。ある対象者のカテゴリ・スロットへの割付も逐次的に行われます。
  • 調査対象者のカテゴリ・スロットへの回答ならびに割付可能性は、調査対象者間で独立です。
  • 調査参加順序は確率的な現象であり、ありうるすべての調査参加順序が等しい確率で実現します。すなわち、調査対象者の回答と調査参加順序とのあいだには関連がありません。

以下の用語を導入します。

  • それぞれのスロットについて、そのスロットに割り付けたい対象者数が定められています。これを「目標対象者数」と呼びます。
  • 調査実施中のある時点において、それまでに割り付けられた対象者数が目標対象者数に達していないスロットを「オープン」、達しているスロットを「クローズド」と形容することにします。
  • 調査実施中のある時点において、オープンなスロットが1つ以上あるカテゴリを「オープン」、すべてのスロットがクローズドであるカテゴリを「クローズド」と形容することにします。

2. 調査手続き

このパッケージは、以下の調査手続きを想定します。

  1. ある人が調査に参加したとき、その対象者について、各カテゴリについて割付可能であるかどうかを調べる。
  2. なんらかの方法で、その対象者をその人の割付可能カテゴリのうちいくつかへと割り付ける。 もし割付できなかったら、その対象者に対する聴取は終了する。
  3. 対象者に、それぞれの割付カテゴリについてスロットのリストを提示し、 それぞれのスロットについて割付可能かどうかを調べる。
  4. なんらかの方法で、その対象者を、いずれかの割付カテゴリにおけるその人の割付可能スロットのうちいくつかへと割り付ける。 もし割付できなかったら、その対象者に対する聴取は中止する。
  5. それぞれの割付スロットについて聴取する。
  6. これを各対象者について繰り返す。一定の条件が満たされたら 調査を終了する。

以下では、上記のうち太字部分について説明します。すなわち、カテゴリの割付方法、スロットの割付方法、調査終了の条件について 説明します。

3. カテゴリの割付方法

割付カテゴリを決める方法は多様です。rSurveyAssignパッケージは、割付方法を次の4つのステップに分解して捉えます。

  • Step 1. 条件に合致するカテゴリを選ぶ。以下のいずれかとします。
    • all: すべてのカテゴリ
    • assignable: 割付可能カテゴリ
  • Step 2. Step 1.で選ばれたカテゴリから、割付カテゴリ数上限までのカテゴリを選ぶ。以下のいずれかとします。
    • random: 無作為に選ぶ
    • openclosed: その時点でオープンなカテゴリから無作為に選ぶ。割付カテゴリ数上限に満たない場合は他のカテゴリから無作為に選ぶ
    • shortnum: その時点でオープンなスロット数が多いカテゴリから順に選ぶ
    • shortratio: その時点でオープンなスロットが占める割合が多いカテゴリから順に選ぶ。
  • Step 3. Step 2.で選ばれたカテゴリから、条件に合致するカテゴリを選ぶ。以下のいずれかとします。
    • assignable: 割付可能カテゴリ
    • open: 割付可能かつオープンなカテゴリ
  • Step 4. Step 3.の結果に基づき、割付を行うかどうかを決める。以下のいずれかとします。
    • none: 1個以上の割付カテゴリが選ばれたすべての対象者について割付を行う
    • allclosed: 選ばれたカテゴリがすべてクローズドであったら割付を中止する

rSurveyAssignパッケージは、上で述べた4つの特徴の組み合わせによって生じる すべての割付方法をサポートしています。参考として、すべての組み合わせを下表に示します。 割り付けるカテゴリの最大数を\(L\)とします。

Step 1. Step 2. Step 3. Step 4. 割付カテゴリの選び方
all random assignable none すべてのカテゴリから\(L\)個を等確率に抜き出し、そのなかからその対象者の割付可能カテゴリを選ぶ。
all random assignable allclosed すべてのカテゴリから\(L\)個を等確率に抜き出し、そのなかからその対象者の割付可能カテゴリを選ぶ。選ばれたカテゴリのなかにオープンなカテゴリがなかったら割付しない。
all random open none,allclosed すべてのカテゴリから\(L\)個を等確率に抜き出し、そのなかからその対象者を割付可能でありかつオープンなカテゴリを選ぶ。
all openclosed assignable none すべてのカテゴリから、オープンなカテゴリを優先して\(L\)個を抜き出し、そのなかからその対象者の割付可能カテゴリを選ぶ。
all openclosed assignable allclosed すべてのカテゴリから、オープンなカテゴリを優先して\(L\)個を抜き出し、そのなかからその対象者の割付可能カテゴリを選ぶ。選ばれたカテゴリのなかにオープンなカテゴリがなかったら割付しない。
all openclosed open none,allclosed すべてのカテゴリから、オープンなカテゴリを優先して\(L\)個を抜き出し、そのなかからその対象者を割付可能でありかつオープンなカテゴリを選ぶ。
all shortnum assignable none すべてのカテゴリから、オープンなスロットが多い順に\(L\)個を抜き出し、そのなかからその対象者の割付可能カテゴリを選ぶ。
all shortnum assignable allclosed すべてのカテゴリから、オープンなスロットが多い順に\(L\)個を抜き出し、そのなかからその対象者の割付可能カテゴリを選ぶ。選ばれたカテゴリのなかにオープンなカテゴリがなかったら割付しない。
all shortnum open none,allclosed すべてのカテゴリから、オープンなスロットが多い順に\(L\)個を抜き出し、そのなかからその対象者を割付可能でありかつオープンなカテゴリを選ぶ
all shortratio assignable none すべてのカテゴリから、オープンなスロットが占める割合が高い順に\(L\)個を抜き出し、そのなかからその対象者の割付可能カテゴリを選ぶ。
all shortratio assignable allclosed すべてのカテゴリから、オープンなスロットが占める割合が高い順に\(L\)個を抜き出し、そのなかからその対象者の割付可能カテゴリを選ぶ。選ばれたカテゴリのなかにオープンなカテゴリがなかったら割付しない。
all shortratio open none,allclosed すべてのカテゴリから、オープンなスロットが占める割合が高い順に\(L\)個を抜き出し、そのなかからその対象者を割付可能でありかつオープンなカテゴリを選ぶ
assignable random assignable none その対象者の割付可能カテゴリから\(L\)個までを等確率に選ぶ。
assignable random assignable allclosed その対象者の割付可能カテゴリから\(L\)個までを等確率に選ぶ。選ばれたカテゴリのなかにオープンなカテゴリがなかったら割付しない。
assignable random open none,allclosed その対象者の割付可能カテゴリから\(L\)個までを等確率に抜き出し、そのなかからオープンなカテゴリを選ぶ。
assignable openclosed assignable none その対象者の割付可能カテゴリから、オープンなカテゴリを優先して\(L\)個までを選ぶ。
assignable openclosed assignable allclosed その対象者の割付可能カテゴリから、オープンなカテゴリを優先して\(L\)個までを選ぶ。選ばれたカテゴリのなかにオープンなカテゴリがなかったら割付しない。
assignable openclosed open none,allclosed その対象者を割付可能でありかつオープンなカテゴリから、\(L\)個までを等確率に選ぶ。
assignable shortnum assignable none その対象者の割付可能カテゴリから、オープンなスロットが多い順に\(L\)個まで選ぶ。
assignable shortnum assignable allclosed その対象者の割付可能カテゴリから、オープンなスロットが多い順に\(L\)個まで選ぶ。選ばれたカテゴリのなかにオープンなカテゴリがなかったら割付しない。
assignable shortnum open none,allclosed その対象者を割付可能でありかつオープンなカテゴリから、オープンなスロットが多い順に\(L\)個まで選ぶ
assignable shortratio assignable none その対象者の割付可能カテゴリから、オープンなスロットが占める割合が高い順に\(L\)個まで選ぶ。
assignable shortratio assignable allclosed その対象者の割付可能カテゴリから、オープンなスロットが占める割合が高い順に\(L\)個まで選ぶ。選ばれたカテゴリのなかにオープンなカテゴリがなかったら割付しない。
assignable shortratio open none,allclosed その対象者を割付可能でありかつオープンなカテゴリから、オープンなスロットが占める割合が高い順に\(L\)個まで選ぶ。

4. 割付スロット決定に際してのカテゴリの決定方法

ある対象者について、もし複数個のカテゴリへの割付が生じていたら、 割付スロットをどの割付カテゴリから選ぶかという問題が生じます。

現バージョンのrSurveyAssignパッケージは、以下に述べる方法のみを想定しています。

  • 割付カテゴリのなかからひとつを等確率に選び、そのカテゴリにおいて、次項で説明する方法で対象者をスロットへと割り付ける。
  • スロット割付ができなかったら、他の割付カテゴリのなかからひとつを等確率に選び、そのカテゴリにおいてスロットへと割り付ける。これを繰り返し、どこかのカテゴリでスロット割付ができるまで続ける。
  • どの割付カテゴリでもスロット割付ができなかったら、その対象者に対する調査を中止する。

従って、ある対象者の割付スロットは、必ず同一カテゴリのスロットとなります。

5. スロットの割付方法

割付スロットを決める方法は、割付カテゴリを決める方法と同様です。rSurveyAssignパッケージは、割付方法を次の4つのステップに分解して捉えます。

  • Step 1. 条件に合致するスロットを選ぶ。以下のいずれかとします。
    • all: すべてのスロット
    • assignable: 割付可能スロット
  • Step 2. Step 1.で選ばれたスロットから、割付スロット数上限までのスロットを選ぶ。以下のいずれかとします。
    • random: 無作為に選ぶ
    • openclosed: その時点でオープンなスロットから無作為に選ぶ。割付スロット数上限に満たない場合は他のスロットから無作為に選ぶ
    • shortnum: その時点で割付対象者数の目標に対する不足数が多いスロットから順に選ぶ
    • shortratio: その時点で割付対象者数の目標に対する不足率が高いスロットから順に選ぶ。
  • Step 3. Step 2.で選ばれたカテゴリから、条件に合致するカテゴリを選ぶ。以下のいずれかとします。
    • assignable: 割付可能スロット
    • open: 割付可能かつオープンなスロット
  • Step 4. Step 3.の結果に基づき、割付を行うかどうかを決める。以下のいずれかとします。
    • none: 1個以上の割付スロットが選ばれたすべての対象者について割付を行う
    • allclosed: 選ばれたスロットがすべてクローズドであったら割付を中止する

rSurveyAssignパッケージは、上で述べた4つの特徴の組み合わせによって生じる すべての割付方法をサポートしています。参考として、すべての組み合わせを下表に示します。 割り付けるスロットの最大数を\(L\)とします。

Step 1. Step 2. Step 3. Step 4. 割付スロットの選び方
all random assignable none すべてのスロットから\(L\)個を等確率に抜き出し、そのなかからその対象者の割付可能スロットを選ぶ。
all random assignable allclosed すべてのスロットから\(L\)個を等確率に抜き出し、そのなかからその対象者の割付可能スロットを選ぶ。選ばれたスロットのなかにオープンなスロットがなかったら割付しない。
all random open none,allclosed すべてのスロットから\(L\)個を等確率に抜き出し、そのなかからその対象者を割付可能でありかつオープンなスロットを選ぶ。
all openclosed assignable none すべてのスロットから、オープンなスロットを優先して\(L\)個を抜き出し、そのなかからその対象者の割付可能スロットを選ぶ。
all openclosed assignable allclosed すべてのスロットから、オープンなスロットを優先して\(L\)個を抜き出し、そのなかからその対象者の割付可能スロットを選ぶ。選ばれたスロットのなかにオープンなスロットがなかったら割付しない。
all openclosed open none,allclosed すべてのスロットから、オープンなスロットを優先して\(L\)個を抜き出し、そのなかからその対象者を割付可能でありかつオープンなスロットを選ぶ。
all shortnum assignable none すべてのスロットから、割付対象者数の不足数が多い順に\(L\)個を抜き出し、そのなかからその対象者の割付可能スロットを選ぶ。
all shortnum assignable allclosed すべてのスロットから、割付対象者数の不足数が多い順に\(L\)個を抜き出し、そのなかからその対象者の割付可能スロットを選ぶ。選ばれたスロットのなかにオープンなスロットがなかったら割付しない。
all shortnum open none,allclosed すべてのスロットから、割付対象者数の不足数がが多い順に\(L\)個を抜き出し、そのなかからその対象者を割付可能でありかつオープンなスロットを選ぶ
all shortratio assignable none すべてのスロットから、割付対象者数の不足率が高い順に\(L\)個を抜き出し、そのなかからその対象者の割付可能スロットを選ぶ。
all shortratio assignable allclosed すべてのスロットから、割付対象者数の不足率が高い順に\(L\)個を抜き出し、そのなかからその対象者の割付可能スロットを選ぶ。選ばれたスロットのなかにオープンなスロットがなかったら割付しない。
all shortratio open none,allclosed すべてのスロットから、割付対象者数の不足率が高い順に\(L\)個を抜き出し、そのなかからその対象者を割付可能でありかつオープンなスロットを選ぶ
assignable random assignable none その対象者の割付可能スロットから\(L\)個までを等確率に選ぶ。
assignable random assignable allclosed その対象者の割付可能スロットから\(L\)個までを等確率に選ぶ。選ばれたスロットのなかにオープンなスロットがなかったら割付しない。
assignable random open none,allclosed その対象者の割付可能スロットから\(L\)個までを等確率に抜き出し、そのなかからオープンなスロットを選ぶ。
assignable openclosed assignable none その対象者の割付可能スロットから、オープンなスロットを優先して\(L\)個までを選ぶ。
assignable openclosed assignable allclosed その対象者の割付可能スロットから、オープンなスロットを優先して\(L\)個までを選ぶ。選ばれたスロットのなかにオープンなスロットがなかったら割付しない。
assignable openclosed open none,allclosed その対象者を割付可能でありかつオープンなスロットから、\(L\)個までを等確率に選ぶ。
assignable shortnum assignable none その対象者の割付可能スロットから、割付対象者数の不足数が多い順に\(L\)個まで選ぶ。
assignable shortnum assignable allclosed その対象者の割付可能スロットから、割付対象者数の不足数が多い順に\(L\)個まで選ぶ。選ばれたスロットのなかにオープンなスロットがなかったら割付しない。
assignable shortnum open none,allclosed その対象者を割付可能でありかつオープンなスロットから、割付対象者数の不足数が多い順に\(L\)個まで選ぶ
assignable shortratio assignable none その対象者の割付可能スロットから、割付対象者数の不足率が高い順に\(L\)個まで選ぶ。
assignable shortratio assignable allclosed その対象者の割付可能スロットから、割付対象者数の不足率が高い順に\(L\)個まで選ぶ。選ばれたスロットのなかにオープンなスロットがなかったら割付しない。
assignable shortratio open none,allclosed その対象者を割付可能でありかつオープンなスロットから、割付対象者数の不足率が高い順に\(L\)個まで選ぶ。

6. 調査の終了

このパッケージは、調査を終了する条件として、以下の2種類を想定しています。

  • {調査対象者数、カテゴリ割付が生じた調査対象者数、スロット割付が生じた調査対象者数}のいずれかが一定の値に達した時に終了する。
  • すべてのスロットがクローズドとなったときに終了する。

後者の条件は、標本抽出法の観点からは逆抽出 (inverse sampling)となっています。逆抽出においては、個々の調査対象者が母集団からの 無作為抽出によって得られていたとしても、調査終了時点での調査対象者集合は母集団からの無作為標本でないという点に注意してください。

7. 割付セッティングの作成

最後に、rSurveyAssignパッケージを使用する際に、調査手続き・割付方法を指定する方法について説明します。

rSurveyAssignパッケージは、調査手続き・割付方法を表すクラスassignsettingを用意しています。 assignsettingクラスのオブジェクトは、関数makeSettingで作成します。

  • lSLOT_REQUEST: 各スロットの目標対象者数。
    • \(J\)個の要素を持つリスト。\(j\)番目の要素は長さ\(K_j\)の整数ベクトル。
    • \(j\)番目の要素であるベクトルの\(k\)番目の要素は、カテゴリ\(j\)のスロット\(k\)に割り付ける対象者数の下限を表します。 欠損は許容されません。
  • nCAT_MAX: 割付カテゴリの最大数。
  • nSLOT_MAX: 割付スロットの最大数。
  • sCAT_ASSIGN: カテゴリの割付方法。上記で説明したstep 1,2,3,4の方法をハイフンでつないだ文字列を指定します。 例, all-random-assignable-none
  • sSLOT_ASSIGN: スロットの割付方法。上記で説明したstep 1,2,3,4の方法をハイフンでつないだ文字列を指定します。 例, all-random-assignable-none
  • nSUBJECT_MAX: 調査対象者の上限。
  • nSUBJECTCAT_MAX: カテゴリ割付対象者の上限。
  • nSUBJECTSLOT_MAX: スロット割付対象者の上限。
  • bSTOP_WHEN_FULFILLED: 調査終了条件。調査は、調査対象者数、カテゴリ割付対象者数、スロット割付対象者数のいずれかが上限に達するまで続きます。この引数をTRUEとすると、これに加えて、すべてのスロットにおいて割付対象者数が目標対象者数に到達したとき(すべてのスロットがクローズドとなったとき)にも調査を終了します。

設定例を示します。以下の例では、

  • カテゴリ数は3, スロット数は各カテゴリにつき10です。
  • すべてのカテゴリのすべてのスロットに、すくなくとも100人の対象者を割り付けることにします。
  • 回答負荷の観点から、ひとりの対象者が割り付けられるカテゴリは2つまで、スロットは2つまでとします。
  • カテゴリの割付方法として`assignable-random-open-none’を使用します。
  • スロットの割付方法として`assignable-shortnum-assignable-allclosed’を使用します。
  • すべてのスロットにおいて割付対象者数が目標に到達したときに調査を停止します。
library(rSurveyAssign)
lSetting <- makeSetting(
  lSLOT_REQUEST = list(rep(100, 10), rep(100, 10), rep(100, 10)),
  nCAT_MAX      = 2, 
  nSLOT_MAX     = 2,
  sCAT_ASSIGN   = 'assignable-random-open-none',
  sSLOT_ASSIGN  = 'assignable-shortnum-assignable-allclosed',
  bSTOP_WHEN_FULFILLED = TRUE
)
#> [makeSetting] assign names to lSLOT_REQUEST ...