[SciPy-User] ancova with optimize.curve_fit
Peter Tittmann
ptittmann at gmail.com
Thu Dec 2 17:59:53 EST 2010
getDiam is a predictor to get dbh from height. It works with curve_fit to find coefficients a and b given datasetset of known dbh/height pairs. You are right, what I want is dummy variables for each plot. I'll see if I can get that worked out by revising getDiam..
Thanks again
On Thursday, December 2, 2010 at 2:43 PM, josef.pktd at gmail.com wrote:
> On Thu, Dec 2, 2010 at 4:51 PM, Peter Tittmann <ptittmann at gmail.com> wrote:
>
> > here is some of the data. Josef, i'm not sure I understand your suggestion.
> > dbh is the dependent variable and is id (actually a list). The independent
> > variable is height and the categorical variable to test for covariance with
> > is plot.
> > Maybe I'm confused and am trying to do something that cant be done this
> > way...
> >
> >
>
> I don't understand what your getDiam function is supposed to do. In
> ancova, indHtPlot is 2d (nobs,2) with variables dbh and plot. getdiam
> calculates [a * dbh**b, a * plot**b] a (nobs,2) array, but it should
> produce instead a 1d (nobs,) array.
> Maybe you want to sum the functions with dbh and plot for each
> observation sum([a * dbh**b, a * plot**b], axis=1)
>
> This should solve the curvefit problem, but if plot is categorical,
> then this wouldn't be correct since it is just treated as metric
> variable. Maybe you want some dummy variables for plot instead. ???
>
> Josef
>
>
>
> > Thanks for any further assistance..
> > Peter
> >
> > --
> > Peter Tittmann
> >
> >
> > On Thursday, December 2, 2010 at 1:33 PM, josef.pktd at gmail.com wrote:
> >
> > On Thu, Dec 2, 2010 at 2:55 PM, Peter Tittmann wrote:
> >
> > Greetings,
> > Im attempting to conduct analysis of covariance (ANCOVA) using a non-linear
> > regression with curve_fit in optimize. The doc string states:
> > "xdata : An N-length sequence or an (k,N)-shaped array for functions with k
> > predictors. The independent variable where the data is measured."
> > I am hoping that this means that if I pass the independent variable and a
> > categorical variable, the resulting covariance matrix will reflect the
> > variability in the equation coefficients among the categorical variables.
> > 1. Is tis the case?
> > 2. If so, i'm having a problem with the input array for xdata. The following
> > extracts data from a relational database (thats the sql). the eqCoeff()
> > function works fine, however when I add a second dimension to the xdata in
> > th ancova() function (indHtPlot), curve fit produces an error which seems to
> > be related to the structure of my input array. I've tried column_stack and
> > vstack to form the arrays. Any assistance would be gratefully received.
> >
> > import birdseye_db as db
> > import numpy as np
> > from scipy.optimize import curve_fit
> > def getDiam(ht, a, b):
> > dbh = a * ht**b
> > return dbh
> >
> > if ht is 2dimensional, then dbh is also two dimensional (n,k). there
> > should be a reduce, e.g. sum in here so that the return is 1d.
> >
> > Josef
> >
> >
> > def eqCoeff():
> > '''estimates coefficients a and b in dbh= a* h**b using all trees where
> > height was measured'''
> > species=[i[0].strip(' ') for i in db.query('select distinct species from
> > plots')]
> > res3d=db.query('select dbh, height, species from plots where ht_code=1')
> > indHt=[i[1] for i in res3d]
> > depDbh=[i[0] for i in res3d]
> > estimated_params, err_est = curve_fit(getDiam, indHt, depDbh)
> > return estimated_params, err_est
> >
> > def ancova():
> > res=db.query('select dbh, height, plot, species from plots where
> > ht_code=1')
> > indHtPlot= np.column_stack(([i[1] for i in res],[i[2] for i in res] ))
> > depDbh=[i[0] for i in res]
> > estimated_params, err_est = curve_fit(getDiam, indHtPlot, depDbh)
> > return estimated_params, err_est
> > Thanks in advance
> > --
> > Peter Tittmann
> >
> >
> > _______________________________________________
> > SciPy-User mailing list
> > SciPy-User at scipy.org
> > http://mail.scipy.org/mailman/listinfo/scipy-user
> >
> >
> > _______________________________________________
> > SciPy-User mailing list
> > SciPy-User at scipy.org
> > http://mail.scipy.org/mailman/listinfo/scipy-user
> >
> >
> > _______________________________________________
> > SciPy-User mailing list
> > SciPy-User at scipy.org
> > http://mail.scipy.org/mailman/listinfo/scipy-user
> >
> >
> > @gmail.com>
> >
> _______________________________________________
> SciPy-User mailing list
> SciPy-User at scipy.org
> http://mail.scipy.org/mailman/listinfo/scipy-user
>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.scipy.org/pipermail/scipy-user/attachments/20101202/e3a7ee29/attachment.html>
More information about the SciPy-User
mailing list