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

使用PyStan实现BSTS模型生成虚拟数据触发TypeError问题求助

报错原因分析
  • 直接触发报错的问题:range() 仅支持传入整数参数,你代码中for t in range(xt_array)、for t in range(qt_array)、for i in range(qi_array)三处均传入了numpy数组,不符合参数要求。
  • 未初始化变量直接使用:代码中x、q、tau、c、a等变量均未提前定义初始化,就直接按下标赋值,后续运行也会报错。
  • 逻辑判断错误:if (NUM_SAMPLES_t < 65) 判断的是固定全局参数,不会随循环的t值变化,不符合时间序列逐时点判断的需求。
  • 语法错误:q[i] = (Q[i] - Q[i-1])(1 - np.exp(-t - 65 / tau[i])) 两处括号间缺少乘号*,Python会识别为函数调用抛出错误。
  • 随机数维度不匹配:np.random.normal(250, 1, 150) 每次生成150个数值,无法直接赋值给单个变量。
  • 函数无返回值:generate_data_dummy_bsts 函数末尾没有return语句,调用后无法拿到生成的观测值用于绘图。
修复方案

以下是调整后的可运行代码,匹配你给出的下标取值规则(t∈[1,104],i∈[0,7]):

import numpy as np
import matplotlib.pyplot as plt

SEED = 1234
np.random.seed(SEED)
NUM_SAMPLES_t = 104  # 匹配t取值范围1-104
NUM_SAMPLES_i = 8    # 匹配i取值范围0-7共8个值

def generate_data_dummy_bsts():
    A = 10
    B = 10
    KD = 10
    a = 2  # 可根据实际公式要求调整参数值
    # 初始化所有变量
    x = np.zeros(NUM_SAMPLES_t)
    q = np.zeros(NUM_SAMPLES_i)
    tau = np.zeros(NUM_SAMPLES_i)
    c = np.random.uniform(1, 10, NUM_SAMPLES_i)  # 可根据实际公式要求调整c的取值范围
    y = np.zeros(NUM_SAMPLES_t)
    
    # 初始化x的前两个值,避免t<2时下标越界
    x[0] = np.random.normal(250, 1)
    x[1] = 2 * x[0] + np.random.normal(250, 1)
    
    for t in range(2, NUM_SAMPLES_t):
        # 趋势项计算
        x[t] = 2 * x[t-1] - x[t-2] + np.random.normal(0, 1)
        
        # 效应项计算
        if t < 65:
            q[:] = 0
        else:
            for i in range(NUM_SAMPLES_i):
                tau[i] = A * np.log(c[i]) + B + np.random.normal(0, 1)
                Q_i = a * c[i] / KD + c[i]
                Q_i_prev = a * c[i-1] / KD + c[i-1] if i>0 else 0
                q[i] = (Q_i - Q_i_prev) * (1 - np.exp(-(t - 65) / tau[i]))
        
        qt = np.sum(q)
        # 最终观测值生成
        y[t] = x[t] + qt + np.random.normal(0, 1)
    return y

# 绘图代码
fig,ax = plt.subplots(figsize=(10,3))
ax.plot(generate_data_dummy_bsts())
plt.show()

注:随机数均值已做调整避免生成的数值过大导致曲线无实际意义,可根据你的公式要求自行修改参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 03:27:00