<div>
                        Greetings,</div><div><br></div><div><span id="goog_121949267"></span><span id="goog_121949268"></span><span id="goog_121949269"></span><span id="goog_121949270"></span>Im attempting to conduct analysis of covariance (ANCOVA) using a non-linear regression with curve_fit in optimize. The doc string states:&nbsp;</div><div><br></div><div><span id="goog_121949271"></span><span id="goog_121949272"></span><span id="goog_121949273"></span><span id="goog_121949274"></span>"xdata : An N-length sequence or an (k,N)-shaped array for functions with k predictors. The independent variable where the data is measured."</div><div><br></div><div><span id="goog_121949275"></span>I am hoping that this means that if I pass the independent variable <u>and</u> a categorical variable, the resulting covariance matrix will reflect the variability in the equation coefficients among the categorical variables.</div><div><br></div><div><span id="goog_121949279"></span>1. Is tis the case?</div><div><br></div><div><span id="goog_121949283"></span><span id="goog_121949284"></span><span id="goog_121949285"></span><span id="goog_121949286"></span>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.<br>
                        <span id="goog_121949287"></span><span id="goog_121949288"></span><span id="goog_121949289"></span><span id="goog_121949290"></span><br>
                </div><div><div>import birdseye_db as db</div><div>import numpy as np</div><div>from scipy.optimize import curve_fit</div><div><br></div><div>def getDiam(ht, a, b):</div><div>&nbsp;&nbsp; &nbsp;dbh = a * ht**b</div><div>&nbsp;&nbsp; &nbsp;return dbh&nbsp;</div><div><br></div><div>def eqCoeff():&nbsp;</div><div>&nbsp;&nbsp; &nbsp;'''estimates coefficients a and b in dbh= a* h**b using all trees where height was measured'''</div><div>&nbsp;&nbsp; &nbsp;species=[i[0].strip(' ') for i in db.query('select distinct species from plots')]</div><div>&nbsp;&nbsp; &nbsp;res3d=db.query('select dbh, height, species from plots where ht_code=1')</div><div>&nbsp;&nbsp; &nbsp;indHt=[i[1] for i in res3d]</div><div>&nbsp;&nbsp; &nbsp;depDbh=[i[0] for i in res3d]</div><div>&nbsp;&nbsp; &nbsp;estimated_params, err_est = curve_fit(getDiam, indHt, depDbh)</div><div>&nbsp;&nbsp; &nbsp;return estimated_params, err_est</div><div>&nbsp;&nbsp; &nbsp;</div><div>def ancova():</div><div>&nbsp;&nbsp; &nbsp;res=db.query('select dbh, height, plot, species from plots where ht_code=1')</div><div>&nbsp;&nbsp; &nbsp;indHtPlot= np.column_stack(([i[1] for i in res],[i[2] for i in res] ))</div><div>&nbsp;&nbsp; &nbsp;depDbh=[i[0] for i in res]</div><div>&nbsp;&nbsp; &nbsp;estimated_params, err_est = curve_fit(getDiam, indHtPlot, depDbh)</div><div>&nbsp;&nbsp; &nbsp;return estimated_params, err_est<span id="goog_121949291"></span><span id="goog_121949292"></span></div></div><div><span id="goog_121949293"></span><span id="goog_121949294"></span><br></div><div>Thanks in advance</div><div><span id="goog_121949297"></span></div><div><br></div>
        <div id="00278F1A00A440A3B2538CA9C2EC0435">--&nbsp;<br>Peter Tittmann<div><br><br></div></div>