numpy python中使用日期排序进行矩阵求逆计算的方法

aoyhnmkz  于 9个月前  发布在  Python
关注(0)|答案(1)|浏览(121)

我有一个时间序列的回报,我需要计算协方差矩阵和一些基于协方差矩阵的测量。
但是我发现当我格式化时间的时候,结果会和没有日期格式的不一样。

#change the date format
    raw['date']=pd.to_datetime(raw['date'])

字符串
特别是,如果您可以访问我的script和数据文件:
1.如果我们使用data-m3来运行脚本,无论我们是否改变第三个单元格中的日期格式,delta_P2的结果总是相同的。
1.如果我们使用data-m6data-m9来运行脚本,并且如果我们更改第三个单元格中的日期格式,则delta_P2的结果会发生变化。
1.这三个数据文件的结构非常相似,只是观测次数不同。
1.我仔细研究了delta_P2的计算,发现使用的协方差矩阵是相同的,但是当做一些矩阵求逆时,结果是不同的。

# Calculate delta_P2
    delta_P2=gamma/2*((V21.values- 
    V20.values.dot(np.linalg.pinv(V00.values).dot(V01.values))).dot(I1)
                  +((V20.values- 
    V21.values.dot(np.linalg.pinv(V11.values).dot(V10.values))).dot(np.linalg.pinv(V00.values- 
    V01.values.dot(np.linalg.pinv(V11.values).dot(V10.values)))).dot(V02.values- 
    V01.values.dot(np.linalg.pinv(V11.values).dot(V12.values)))- 
    V20.values.dot(np.linalg.pinv(V00.values).dot(V02.values))).dot(I2)
                 
    +V21.values.dot(np.linalg.pinv(V11.values).dot(V10.values)).dot(np.linalg.pinv(V00.values- 
    V01.values.dot(np.linalg.pinv(V11.values).dot(V10.values)))).dot(V02.values- 
    V01.values.dot(np.linalg.pinv(V11.values).dot(V12.values))).dot(I2)
                 +V21.values.dot(np.linalg.pinv(V11.values- 
    V10.values.dot(np.linalg.pinv(V00.values).dot(V01.values)))).dot(V12.values- 
    V10.values.dot(np.linalg.pinv(V00.values).dot(V02.values))).dot(I2)
                 )


我知道Python中的矩阵求逆可能会因为某些原因而略有不同。但我更困惑的是为什么错误只发生在某些文件中,而不是所有情况下。

vhmi4jdf

vhmi4jdf1#

我正在使用Python 3.11和Pandas 2.1.3和Numpy 1.26.2。我尝试使用不同的文件和不同的日期格式运行您的代码,delta_P2打印出相同的结果。
你仍然得到不同的值吗?如何将Pandas和Numpy更新到最新版本。确保你正在转换的数据是你期望用作输入的数据。

相关问题