【发布时间】:2023-08-21 21:12:01
【问题描述】:
我正在尝试使用delta method 来计算非线性回归模型的置信区间。我的标准错误是 5,3,3 的数组,但是我认为标准错误应该是 5 个值,而不是矩阵。尝试从我的预测值中添加或减去 standard_error 数组时出现值错误。任何帮助将不胜感激。
df = pd.DataFrame({
'cumsum_days': [1,2,3,4,5],
'pred': [388.259631, 368.389649, 349.754534, 332.264306, 315.836485]})
cov = np.array([[2.67918945e+04, 2.62421460e+02, 9.08452505e+00],
[2.62421460e+02, 4.31869566e+00, 1.24995272e-01],
[9.08452505e+00, 1.24995272e-01, 3.90413410e-03]])
# estimate confidence interval for predicted probabilities
gradient = np.gradient(df['pred'], df['cumsum_days'])
std_errors = np.array([np.sqrt(np.dot(np.dot(g, cov), g)) for g in gradient])
c = 1.96 # multiplier for confidence interval
upper = np.maximum(0, np.minimum(1, (df['pred'] + std_errors * c)))
lower = np.maximum(0, np.minimum(1, (df['pred'] - std_errors * c)))
这里的值错误:
print(df['pred'] + std_errors)
ValueError: operands could not be broadcast together with shapes (5,) (5,3,3)
【问题讨论】:
-
梯度是一个长度为 5 的列表,那么您的 3x3 协方差矩阵如何映射到它?
标签: python gradient matrix-multiplication confidence-interval