You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用dcreate限制全因子设计选择数?Stata代码异常排查

解决Stata离散选择实验设计观测数异常问题

问题原因

原代码中genfact, levels(levmat)生成了全因子设计的所有2700个备选方案(计算:5×5×4×3×3×3=2700),后续执行dcreate时,默认会从这2700个备选里生成所有可能的2备选选择集,直接导致观测数远超预期。你需要的是正交部分因子设计,而非全因子的所有组合。

修正代码

直接跳过全因子生成步骤,用dcreate直接生成指定数量的选择集,再进行区块划分和变量重编码:

clear
* 直接生成正交选择集:60个选择集,每个含2个备选方案
* 括号内为属性名及对应水平数:AA(5), AB(5), AC(4), AD(3), AE(3), AF(3)
dcreate (AA 5) (AB 5) (AC 4) (AD 3) (AE 3) (AF 3), nalt(2) nset(60) ///
    bmat(-0.01 -0.1 0 0 0 0 0 0 0 0 0 0 0 0)

* 将60个选择集划分为2个区块,每个区块30个选择集
blockdes block, nblock(2)

* 按照需求对属性值重新编码
recode AA (1=-20) (2=-10) (3=0) (4=10) (5=20)  // 对应原代码的TravTime
recode AB (1=-20) (2=-10) (3=0) (4=10) (5=20)  // 对应原代码的CouncilTax
recode AD (1=-10) (2=0) (3=10)                 // 对应原代码的PrimDist

list, separator(2)

关键说明

  1. dcreate的正确用法:直接通过括号定义属性与水平数,nalt(2)指定每个选择集的备选方案数,nset(60)指定总选择集数量(匹配你2区块×30选择集的需求)。
  2. 区块划分:blockdes会自动将60个选择集均匀分配到2个区块中,每个区块30个选择集。
  3. 观测数对应:每个选择集含2个备选方案,因此总观测数为60×2=120。若你确实需要仅60个观测(即30个选择集),可将nset(30),再用blockdes, nblock(2)划分为2个各15选择集的区块。

内容的提问来源于stack exchange,提问作者Jeff Lam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 14:10:29