Python Forum
Python write result of VAR to excel file - Printable Version

+- Python Forum (https://python-forum.io)
+-- Forum: Python Coding (https://python-forum.io/forum-7.html)
+--- Forum: Data Science (https://python-forum.io/forum-44.html)
+--- Thread: Python write result of VAR to excel file (/thread-19747.html)



Python write result of VAR to excel file - wissam1974 - Jul-12-2019

Hi for all,
i am working on creation of model VAR(Vector Auto Regressive) using python.
here is the pseudo code
model = VAR(MyDataFrame)
results = model.fit(maxlags=7, method='ols', ic='aic', trend='c', verbose=False)
res2=results.summary()
print(res2)
print(type(res2))
exit()
the result that i have got is shown below:
Output:
Summary of Regression Results ================================== Model: VAR Method: OLS Date: Sat, 13, Jul, 2019 Time: 02:39:36 -------------------------------------------------------------------- No. of Equations: 10.0000 BIC: 18.5402 Nobs: 4010.00 HQIC: 17.8205 Log likelihood: -91127.2 FPE: 3.69610e+07 AIC: 17.4253 Det(Omega_mle): 3.10114e+07 -------------------------------------------------------------------- Results for equation TMIN ========================================================================== coefficient std. error t-stat prob -------------------------------------------------------------------------- const 51.900181 10.849815 4.784 0.000 L1.TMIN 0.283955 0.037289 7.615 0.000 L1.TMAX 0.352748 0.032167 10.966 0.000 ... Results for equation TMAX ========================================================================== coefficient std. error t-stat prob -------------------------------------------------------------------------- const 11.231979 17.159595 0.655 0.513 L1.TMIN 0.061324 0.058975 1.040 0.298 L1.TMAX 0.892760 0.050875 17.548 0.000 L1.UMIN 0.079147 0.013430 5.893 0.000 ..... #result of print(type(res2)) is: <class 'statsmodels.tsa.vector_ar.output.VARSummary'>
Error:
my problem is how can i write the above result to excel file??i tried to google my problem but unfortunately i did not found an appropriate solution so any help will be appreciated.
Thank you in advance.


RE: Python write result of VAR to excel file - Skaperen - Jul-13-2019

you can find 92 pages worth of packages starting here.


RE: Python write result of VAR to excel file - wissam1974 - Jul-13-2019

Hi Mr,
i checked the link you have sent but i did not found what i am looking for, do you please help me find the one that fit my situation which is write the result of "write output of var.fit.summary to excel file or CSV file"
thank you.


RE: Python write result of VAR to excel file - perfringo - Jul-13-2019

Maybe I don't comprehend the whole picture but there is input-output library of statsmodel - iolib

Quote:Users can also leverage the powerful input/output functions provided by pandas.io. Among other things, pandas (a statsmodels dependency) allows reading and writing to Excel, CSV, and HDF5 (PyTables).



RE: Python write result of VAR to excel file - wissam1974 - Jul-13-2019

(Jul-13-2019, 07:33 AM)perfringo Wrote: Maybe I don't comprehend the whole picture but there is input-output library of statsmodel - iolib

Quote:Users can also leverage the powerful input/output functions provided by pandas.io. Among other things, pandas (a statsmodels dependency) allows reading and writing to Excel, CSV, and HDF5 (PyTables).

Hi Mr,
first i would like to thank you for you help.
i checked the link that you had sent, and i make some modifications on my code so as it becomes as follow:

import pandas as pd
from statsmodels.tsa.base.datetools import dates_from_str
import numpy as np
from statsmodels.tsa.api import VAR, DynamicVAR
import matplotlib.pyplot as plt
import statsmodels.api as sm
from statsmodels.iolib.table import SimpleTable

data_NO_nan_neg=dta[ ['TMIN','TMAX','UMIN', 'UMAX','DD','FF' ,'RR' , 'TD','PS', 'PM'] ]
model =sm.tsa.VAR(data_NO_nan_neg)
results = model.fit(maxlags=7, method='ols', ic='aic', trend='c', verbose=False)
res2=results.summary()
results_as_csv=res2.tables[0].as_csv()
i re-run the model and i am getting the following error:
Error:
results_as_csv=res2.tables[0].as_csv() AttributeError: 'VARSummary' object has no attribute 'tables'
can you please help me to overpass this error.
Thank you a lot Mr.


RE: Python write result of VAR to excel file - perfringo - Jul-13-2019

I don't use this module therefore my advice is general one.

Error message clearly states that "'VARSummary' object has no attribute 'tables'". You can't apply this method to this object.

From the iolib page you can find this (maybe it helps).

Quote:summary.Summary() class to hold tables for result summary presentation

You can try the brute-force approach (I have no idea will it work): write the whole VARSummary object to csv, read this csv into pandas dataframe and extract tables needed, then write tables into Excel.


RE: Python write result of VAR to excel file - wissam1974 - Jul-13-2019

(Jul-13-2019, 08:42 AM)perfringo Wrote: I don't use this module therefore my advice is general one.

Error message clearly states that "'VARSummary' object has no attribute 'tables'". You can't apply this method to this object.

From the iolib page you can find this (maybe it helps).

Quote:summary.Summary() class to hold tables for result summary presentation

You can try the brute-force approach (I have no idea will it work): write the whole VARSummary object to csv, read this csv into pandas dataframe and extract tables needed, then write tables into Excel.

Ok Mr, but this is the main issue how can write the whole VARSummary object to csv, if i make it i can then proceed to others steps, how can write the whole VARSummary object to csv? thank you


RE: Python write result of VAR to excel file - scidam - Jul-13-2019

As it could be seen from VARSummary source code, this class doesn't have .as_csv method (iolib includes classes with such method). Also, it has no other methods related with csv-creation. I am not sure completely, but it seems that the best method to do what you want is to inspect your model object and find all needed coefficients. Model object includes all data you need (e.g. model.aic etc). You can built your own container, e.g. a data frame of these values and write this data-frame to csv.


RE: Python write result of VAR to excel file - wissam1974 - Jul-13-2019

Hi Mr but how can i find all needed coefficients and how can i built my own container?? can you give me more details?? in fact i tried several trials such as

data_NO_nan_neg=mdata.replace(np.inf, np.nan).replace(-np.inf, np.nan).dropna()
model =sm.tsa.VAR(data_NO_nan_neg)

results = model.fit(maxlags=7, method='ols', ic='aic', trend='c', verbose=False)
res2=results.summary()
#print(res2)
print(type(res2))

res3=results.summary.Summary()

results_as_csv=SimpleTable.as_csv(res2)
results_as_csv=statsmodels.iolib.summary.Summary.as_csv(res2)
results_as_csv=statsmodels.iolib.summary.Summary(results, 'test.csv')
print(results_as_csv)


res_all = []
results=res2 for res in results:
    low, upp = res.confint().T   # unpack columns
    res_all.append(np.concatenate(([res.llf], res.params, res.tvalues, res.pvalues,
                   low, upp)))
unfortunately i did not solve my problem!! I will be very thankful if you give me more details to solve this complexity.
Thank you