理解期望效用假设Expected Utility Hypothesis

本文深入探讨了经济学、博弈论及决策理论中的预期效用假说,解释了个体在面对不确定性结果选择时,如何通过计算期望值来评估赌博的主观价值,强调了个体对结果的估值可能与实际货币价值不同。
  • Expected utility hypothesis

    From wikipedia, in economics, game theory, and decision theory, the expected utility hypothesis- concerning people’s preferences with regard to choices that have uncertain outcomes (gambles) - states that the subjective value(主观价值) associated with an individual’s gamble is the statistical expectation of that individual’s valuations of the outcomes of that gamble, where these valuations may differ from the dollar value of those outcomes.

    预期效用理论:在风险情况下,个人所作出的选择是追求某一数量的期望值的最大化。

### 如何在 Python 中实现期望效用函数 期望效用理论是一种决策模型,它通过计算不同选项的加权平均效用来帮助做出最优选择。以下是基于概率和效用值构建的一个简单例子。 #### 定义期望效用函数 假设有一个随机变量 \( X \) 的可能取值集合及其对应的概率分布 \( P(X=x_i)=p_i \),以及一个效用函数 \( U(x) \) 表示每种结果的价值,则期望效用可以通过下述公式定义: \[ EU = \sum_{i=1}^{n} p_i U(x_i) \] 其中: - \( n \) 是可能的结果数量; - \( p_i \) 是第 \( i \) 种结果的概率; - \( U(x_i) \) 是对应于结果 \( x_i \) 的效用值。 下面是一个简单的 Python 实现: ```python def expected_utility(probabilities, utilities): """ 计算给定概率和效用值下的期望效用。 参数: probabilities (list of float): 各种结果发生的概率列表。 utilities (list of float): 对应各种结果的效用值列表。 返回: float: 期望效用值。 """ if len(probabilities) != len(utilities): raise ValueError("概率和效用值的数量必须相等") eu = sum(p * u for p, u in zip(probabilities, utilities)) return eu # 示例输入 probabilities = [0.2, 0.5, 0.3] # 结果发生概率 utilities = [10, 20, 30] # 效用值 # 调用函数 eu_result = expected_utility(probabilities, utilities) print(f"期望效用值为: {eu_result}") ``` 此代码实现了基本的期望效用计算逻辑,并验证了输入的有效性[^1]。 --- #### 使用类型注解增强代码可读性 为了提高代码的可读性和可维护性,可以利用 Python 的函数注解功能指定参数和返回值的类型。这不仅有助于开发者理解代码意图,还可以配合静态类型检查工具(如 `mypy`)提前捕获潜在错误。 修改后的版本如下所示: ```python from typing import List def expected_utility( probabilities: List[float], utilities: List[float] ) -> float: """ 带有类型注解的期望效用函数 参数: probabilities (List[float]): 各种结果发生的概率列表。 utilities (List[float]): 对应各种结果的效用值列表。 返回: float: 期望效用值。 """ if len(probabilities) != len(utilities): raise ValueError("概率和效用值的数量必须相等") eu = sum(p * u for p, u in zip(probabilities, utilities)) return eu # 示例调用保持不变 probabilities = [0.2, 0.5, 0.3] utilities = [10, 20, 30] eu_result = expected_utility(probabilities, utilities) print(f"带类型注解的期望效用值为: {eu_result}") ``` 这里引入了 `typing.List` 来明确声明参数类型,从而增强了代码的语义表达能力。 --- #### 数据清理与异常处理 实际应用中可能会遇到无效数据的情况,比如负数概率或缺失值等问题。因此,在正式部署之前建议加入必要的校验逻辑以确保输入有效。例如: ```python import numpy as np def validate_input(probabilities: List[float], utilities: List[float]): """ 验证输入是否合法 """ if not all(np.isfinite(probabilities)) or not all(np.isfinite(utilities)): raise ValueError("输入包含非法数值(NaN 或 Inf)") if any(p < 0 or p > 1 for p in probabilities): raise ValueError("概率值应在区间 [0, 1]") if abs(sum(probabilities) - 1) > 1e-8: raise ValueError("概率总和应当接近于 1") validate_input(probabilities, utilities) eu_result = expected_utility(probabilities, utilities) print(f"经过验证后的期望效用值为: {eu_result}") ``` 上述片段展示了如何结合 NumPy 库完成浮点数范围检验及有限性判断[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值