numpy.polyfit给出协方差矩阵的误差

时间:2017-09-24 16:02:00

标签: python numpy

这是代码:

const label = 'Checkbox Test';
const checked = false;
const onChange = jest.fn();

describe('Checkbox', () => {
  it('renders correctly', () => {
    const cbTest = shallow(
    <Checkbox 
      checked={checked} 
      styles={styles} 
      onChange={onChange} 
      label="someLabel" />
    expect(cbTest).toMatchSnapshot();
  });
});

它给了我这样的信息:

  

4 z,n = np.polyfit(p,q,1,cov = True)

     

C:\ Users \ Rekha \ Anaconda3 \ lib \ site-packages \ numpy \ lib \ polynomial.py in polyfit(x,y,deg,rcond,full,w,cov)

     

601#另外,它对不确定性给出了稍微保守的估计。

     

602 if len(x)&lt; = order + 2:

     

- &GT; 603引发ValueError(&#34;数据点数必须超过+ 2&#34;      604&#34;贝叶斯估计协方差矩阵&#34;)

     

605 fac = resids /(len(x) - order - 2.0)

     

ValueError:贝叶斯数据点的数量必须超过+2的数量                       估计协方差矩阵

我无法弄清楚为什么会这样?我有四个数据点,足以适合一行

1 个答案:

答案 0 :(得分:0)

该错误正好说明了问题所在:您没有足够的数据指向估计协方差矩阵(以及来执行拟合)。

import numpy as np

p = [1, 2, 3, 4]
q = [4, 5, 6, 7]

z = np.polyfit(p, q, 1, cov=False)
print(z)

或者,如果您满足建议的条件,即可以获得协方差矩阵的估计值,即另外一个数据点。

import numpy as np

p = [1, 2, 3, 4, 5]
q = [4, 5, 6, 7, 8]

z, n = np.polyfit(p, q, 1, cov=True)

print(z, n)

我不知道你需要协方差矩阵,但如果你需要的是fit参数的误差,你可以考虑手动计算,例如:将C(n, k)个数据点的所有可能n组合用于k的所有有效值,然后计算所得系数的标准偏差。