田中勝也研究室

環境経済学 × 気候・災害リスク × データサイエンス

FactorialSurvey を更新しました

2026年11月2日

要因サーベイ実験(ファクトリアルサーベイ実験、FSE)のためのRパッケージ FactorialSurvey の開発版(0.2.0.9000)を GitHub で公開しました。2025年に公開した版から、ビネットの設計、実査の準備、必要な回答者数の検討、推定、支払意思額(WTP)の計算までを、一つのパッケージで通して行えるようになっています。

以前の版を使っていた方に影響する修正(設計のバグ修正と関数の引数名の変更)も含まれているので、以前の版を使っていた方へもあわせてご覧ください。

主な更新内容 以前の版を使っていた方へ 使い方 検証 今後の予定

主な更新内容

設計

D効率的な設計を作る fs_defficient() の不具合を修正し、D効率を標準的な定義(直交計画で100%)で表示するようにしました。A効率も表示します。新しい fs_efficiency() は、他のソフトで作った設計や過去の設計も評価できます。

実査の準備

fs_assign() がブロックと提示順を回答者に割り付けます。提示順はウィリアムズ計画に基づき、順序効果と持ち越し効果を均等にします。fs_vignette_text() でビネットの文章を作り、fs_export() で CSV、Excel、Qualtrics の Loop & Merge 用の表に書き出せます。

必要な回答者数

fs_power() は、想定した効果のもとで調査をシミュレーションし、回答者数ごとに各効果を検出できる確率(検出力)と WTP の精度を示します。fs_simulate_ratings() で模擬データも作れます。

推定

0〜10点などの評定にはベータ回帰(fs_betareg())、受け入れる/受け入れないの二値回答にはロジット(fs_logit())を使います。どちらも cluster = ~ id で回答者単位のクラスター頑健標準誤差を計算します。1〜7点や0〜100点の尺度にも対応しました。

支払意思額

fs_mwtp() は属性ごとの限界支払意思額(MWTP)を一括で計算します。区間はデルタ法、Krinsky–Robb 法、Fieller 法から選べます。新しい fs_ewtp() は、属性の組み合わせ(政策シナリオ)全体の期待支払意思額(EWTP)を Tanaka et al. (2027) の方法で計算します。

図とデータ

推定結果と WTP は plot() で図にできます(ggplot2、白黒印刷向け)。授業で集めた弁当の評価データ bento(学生48人×8ビネット)を同梱し、英語の解説(ビネット)を追加しました。

以前の版を使っていた方へ

数値の水準で作った設計を確認してください

以前の fs_defficient() には、属性の水準を数値(1:3 や c(400, 600, 800) など)で与えると、その属性を連続変数として扱ってしまう不具合がありました。この場合、設計は直線の傾きを推定するのに最適化されるため、中間の水準がほとんど、あるいはまったく選ばれず、その水準の効果を推定できない設計になることがありました。今回の版では、すべての属性を水準のカテゴリとして扱います。

過去にこの方法で作った設計は、fs_efficiency() に本来の水準を渡すと、欠けている水準を確認できます。

fs_efficiency(old_design,
              factors = list(price = c(400, 600, 800), time = 1:3))

D効率の値が変わりました

以前の版が表示していた D効率の値は正確ではありませんでした。今回から Kuhfeld, Tobias and Garratt (1994) の定義に改め、直交計画で100%になる値を表示します。以前の値とは比べられないので、ご注意ください。

関数の使い方の変更

以前今回の版
fs_mwtp(model_results = result, variable_name = "side", price_variable_name = "price")fs_mwtp(result, variable = "side", price = "price")
(variable を省くと全属性を一括で計算)
fs_betareg() を実行すると結果が表示される結果はオブジェクトに保存され、summary() で表示(係数、適合度、平均限界効果)
fs_post_estimate()(以前のこのページの案内)この関数はありません。適合度は summary() に含まれます
set_lavels()set_labels()(綴りの誤りを修正)

クラスター頑健標準誤差

要因サーベイ実験では一人が複数のビネットを評価するため、同じ回答者の回答は互いに相関します。fs_betareg() と fs_logit() で cluster を指定しないと、警告を出すようにしました。回答者を独立とみなしてよい場合は cluster = FALSE を指定してください。

使い方

インストール

install.packages("remotes")
remotes::install_github("tanakak/FactorialSurvey")
library(FactorialSurvey)

ビネットを設計する

属性と水準をリストで与えると、D効率的な16個のビネットを作り、2つのブロックに分けます。

attrs <- list(
  main  = c("grilled fish", "teriyaki chicken", "tofu hamburger"),
  side  = c("no", "yes"),
  info  = c("no", "yes"),
  price = c(700, 900, 1100, 1300)
)
design <- fs_defficient(attrs, n_vignettes = 16, n_blocks = 2, seed = 1)
fs_efficiency(design)
Design efficiency
  Vignettes    : 16
  Parameters   : 8
  D-efficiency : 98.3%
  A-efficiency : 96.6%

推定して支払意思額を求める

同梱の bento データ(主菜・副菜・栄養表示・価格を変えた弁当を、0=絶対に買わない〜10=絶対に買う で評価)で、ベータ回帰を推定します。

fit <- fs_betareg(rating ~ main + side + info + price,
                  data = bento, cluster = ~ respondent)
summary(fit)

fs_mwtp(fit, price = "price")
             variable     MWTP      SE    lower    upper
 mainteriyaki chicken 468.7263 82.2896 307.4416 630.0109
   maintofu hamburger  62.6008 68.8856 -72.4125 197.6141
                 side 209.9063 56.8564  98.4699 321.3427
                 info  84.6877 49.3522 -12.0409 181.4163

この例では、主菜が焼き魚から照り焼きチキンに変わることの MWTP が約469円、副菜が付くことの MWTP が約210円と推定されます。豆腐ハンバーグと栄養表示は、95%信頼区間が0をまたいでいます。

弁当全体の価値は fs_ewtp() で求めます。価格以外の属性の組み合わせを1行ずつ指定します。

boxes <- data.frame(
  main = c("grilled fish", "teriyaki chicken"),
  side = c(0, 1), info = c(0, 1),
  row.names = c("Fish, plain", "Chicken, full")
)
fs_ewtp(fit, boxes, price = "price")
      scenario   EWTP     SE lower  upper
   Fish, plain  536.2  69.58 399.8  672.6
 Chicken, full 1083.0 101.50 884.1 1282.0

CSV ファイルの読み込みから図の作成までを通したスクリプトは、FactorialSurvey のページの Quick start(fs_demo.R)にあります。設計から必要な回答者数の検討までを含む解説は、英語のビネット「Getting started with FactorialSurvey」をご覧ください。

検証

今後の予定

CRAN への登録

Windows 環境での R 開発版のチェックなど、提出前の確認を終えたうえで、CRAN(R の公式パッケージ配布サイト)への登録を申請する予定です。登録されれば install.packages("FactorialSurvey") でインストールできるようになります。

論文と書籍

パッケージの設計と推定の方法を説明する英語の論文と、要因サーベイ実験の考え方からパッケージを使った分析までを解説する日本語の書籍を準備しています。

今後追加を検討している機能

不具合の報告や機能の要望は、GitHub Issues で受け付けています。

引用

研究でパッケージを使用された場合は、次の論文を引用してください。

→ FactorialSurvey のページへ