作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用delta方法
来计算非线性回归模型的置信区间。我的标准误差是 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,),你的cov是形状(3,3),通过迭代梯度中的每个元素g,np.dot(g, cov)只会将每个元素相乘cov 矩阵的元素由数字 g (1) 组成,给出形状 (3,3) 并创建形状 (3,3) 的 5 个元素的列表,因此形状 (5,3,3)。
我不知道有关 delta 方法的详细信息,但在我看来,您应该拥有形状为 (5,5) 的 cov 矩阵,或者通过删除第一个和最后一个来获得形状为 (3,) 的梯度值,然后您将能够执行 std_error = np.sqrt(np.dot(np.dot(gradient, cov),gradient))
关于python - 矩阵代数 - ValueError - 计算置信区间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59937325/
我是一名优秀的程序员,十分优秀!