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

关于R中DCchoice包dbchoice函数计算WTP均值与中位数的技术问询

R语言DCchoice包dbchoice函数的WTP均值手动验证方法

你用DCchoice包dbchoice函数默认对数逻辑分布时,已经验证了WTP中位数($\exp(-\beta_{const}/\beta_{bid})$),现在要手动验证均值,结合Aizaki等人2014年的《Stated preference methods using R》,具体操作如下:

核心公式

对数逻辑分布下的WTP均值公式为:
$$WTP_{mean} = WTP_{median} \times \Gamma(1+\sigma) \times \Gamma(1-\sigma)$$
其中:

  • $WTP_{median}$就是你已经验证过的$\exp(-\beta_{const}/\beta_{bid})$,$\beta_{const}$是受限模型的常数项,$\beta_{bid}$是投标变量的系数;
  • $\sigma$是对数逻辑分布的尺度参数,对应模型误差项的尺度,可从dbchoice的模型结果中提取。

手动验证步骤

  1. 提取模型参数

    • 从你的dbchoice模型结果里,取出常数项(比如model$coefficients["(Intercept)"])和投标系数(model$coefficients["bid"]);
    • 取出尺度参数$\sigma$,通常是模型结果的scale属性(比如model$scale)。
    • 注意:投标系数一般为负,计算时别搞反符号,确保$-\beta_{const}/\beta_{bid}$为正。
  2. 计算Gamma函数项
    用R的gamma()函数计算两个Gamma值的乘积:

    sigma <- model$scale  # 替换成你的模型尺度参数
    gamma_product <- gamma(1 + sigma) * gamma(1 - sigma)
    
  3. 计算均值WTP
    先算出中位数,再乘以上面的Gamma乘积:

    beta_const <- model$coefficients["(Intercept)"]
    beta_bid <- model$coefficients["bid"]
    wtp_median <- exp(-beta_const / beta_bid)
    wtp_mean_manual <- wtp_median * gamma_product
    
  4. 对比验证
    把手动算出的wtp_mean_manual和dbchoice模型输出的WTP均值对比,只要浮点误差在可接受范围内,就说明验证正确。

补充说明

如果用的是标准logit模型(无尺度参数估计),此时误差项是标准Gumbel分布,WTP均值的计算会用到公式:
$$WTP_{mean} = \frac{-\beta_{const}}{\beta_{bid}} \times \frac{\pi}{\sin(\pi/\tau)}$$
其中$\tau$是离散参数,标准logit下$\tau=1$,但这个公式此时无意义——这种情况下模型的均值大概率是通过模拟方法得到的,你可以用模型的参数生成WTP样本后取均值来验证。

参考文献:Aizaki, H., Nakatani, T., Sato, K. 2014, Stated preference methods using R, CRC Press, Florida.

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 19:05:03