我正在使用jupyter笔记本中的vars包
为了简单起见,Jupyter笔记本上的前几行应该是
import pandas as pd, numpy as np
# Call function from R
import os
os.environ['R_USER'] = 'D:\Anaconda3\Lib\site-packages\rpy2'
import rpy2.robjects as robjects
from rpy2.robjects import pandas2ri
pandas2ri.activate()
from rpy2.robjects.packages import importr
utils = importr('utils')
ggplot2 = importr("ggplot2", lib_loc = "C:/.../R/win-library/3.3")
# Import vars
Rvars = importr("vars", lib_loc = "C:/.../R/win-library/3.3")
我有一个数据框说
df = pd.DataFrame(np.random.random((108, 2)), columns=['Number1','Number2'])
df.head()
我编码了
Model2=Rvars.VAR(df,p=3, type='const')
type(Model2)
并收到以下
rpy2.robjects.vectors.ListVector
使用元组编码时
tuple(Model2.slots)
我收到了
('names', 'class')
因此将名称打印为
print(Model2.names)
生成
[1] "varresult" "datamat" "y" "type" "p"
[6] "K" "obs" "totobs" "restrictions" "call"
以上所有值都只是R中具有类属性'varest'的列表的元素,如
中所述https://cran.r-project.org/web/packages/vars/vars.pdf
第45页
我如何从python访问varresult
?
答案 0 :(得分:0)
我想我已经弄明白了。
我得到了很好的帮助http://rpy.sourceforge.net/rpy2/doc-2.1/html/introduction.html
为了便于说明,请考虑获取变量.gradle
的简单情况,该变量代表内生变量的数据矩阵。
y
和.rx
是rpy2中的新功能,如
http://rpy.sourceforge.net/rpy2/doc-2.2/html/changes.html
虽然不同,但在
中回答了类似的问题extract coefficients from R lme model in rpy2
基于我提出的问题
让我们提取变量.rx2
,它代表内生变量的数据矩阵。
这可以通过python属性y
作为
rx2
您会发现A=Model2.rx2('y')
y=pd.DataFrame(np.array(A),columns=A.names[1])
y.head()
与原始数据框y.head()
相同
然而,提取元素df.head()
有点复杂
我遵循与
中相似的论点varresult
然后
A=Model2.rx2('varresult')
print(A.names)
Output: [1] "Number1" "Number2"
例如,要从第一个等式中获得回归的残差,可以使用以下
B=A.rx2('Number1')
print(B.names)
Output:
[1] "coefficients" "residuals" "effects" "rank"
[5] "fitted.values" "assign" "qr" "df.residual"
[9] "xlevels" "call" "terms" "model"