Stefano Potter Stefano Potter - 1 year ago 375
Python Question

Print OLS regression summary to text file

I am running OLS regression using

using a
with the following code:

from pandas.stats.api import ols

result=df.groupby(['FID']).apply(lambda d: ols(y=d.loc[:, 'MEAN'], x=d.loc[:, ['Accum_Prcp', 'Accum_HDD']]))
for i in result:
x=pd.DataFrame({'FID':i.index, 'delete':i.values})
frame = pd.concat([x,DataFrame(x['delete'].tolist())], axis=1, join='outer')
del frame['delete']
print frame

but this returns the error:

AttributeError: 'OLS' object has no attribute 'index'

I have about 2,000 items in my group by and when I print each one out they look something like this:


------------------------Summary of Regression Analysis-------------------------

Formula: Y ~ <Accum_Prcp> + <Accum_HDD> + <intercept>

Number of Observations: 79
Number of Degrees of Freedom: 3

R-squared: 0.1242
Adj R-squared: 0.1012

Rmse: 0.1929

F-stat (2, 76): 5.3890, p-value: 0.0065

Degrees of Freedom: model 2, resid 76

-----------------------Summary of Estimated Coefficients------------------------
Variable Coef Std Err t-stat p-value CI 2.5% CI 97.5%
Accum_Prcp 0.0009 0.0003 3.28 0.0016 0.0004 0.0015
Accum_HDD 0.0000 0.0000 1.98 0.0516 0.0000 0.0000
intercept 0.4750 0.0811 5.86 0.0000 0.3161 0.6340
---------------------------------End of Summary---------------------------------

I want to be able to export each one to a csv so that I can view them individually.

Answer Source

In order to write out the result of pandas.stats.api.ols, use a text file to match the output format, for instance:

from pandas.stats.api import ols
grps = df.groupby(['FID'])
for fid, grp in grps:
    result = ols(y=grp.loc[:, 'MEAN'], x=grp.loc[:, ['Accum_Prcp', 'Accum_HDD']])

    text_file = open("Output {}.txt".format(fid), "w")
Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download