00001
00002 #include <assert.h>
00003 #include <stdio.h>
00004
00005
00006 #include <lregress.h>
00007
00008 using namespace std;
00009
00026
00027
00028
00033 void init_data( vector<lregress::point> &data )
00034 {
00035 static double X[] = { 55.77,
00036 55.05,
00037 54.27,
00038 50.63,
00039 49.86,
00040
00041 53.04,
00042 51.33,
00043 56.70,
00044 55.07,
00045 55.76,
00046
00047 54.40,
00048 55.39,
00049 57.49,
00050 57.56,
00051 58.76,
00052
00053 59.32,
00054 57.21,
00055 68.55,
00056 65.04,
00057 66.98,
00058
00059 63.69,
00060 58.34 };
00061
00062 static double Y[] = { 83.9,
00063 66.4,
00064 73.1,
00065 66.7,
00066 30.1,
00067
00068 36.2,
00069 22.8,
00070 66.5,
00071 37.0,
00072 58.0,
00073
00074 71.9,
00075 83.1,
00076 66.2,
00077 72.3,
00078 65.8,
00079
00080 123.5,
00081 116.8,
00082 160.1,
00083 158.2,
00084 152.2,
00085
00086 134.8,
00087 87.3 };
00088
00089 const size_t N = sizeof( X ) / sizeof( double );
00090 assert( N == (sizeof( Y ) / sizeof(double)) );
00091
00092 size_t i;
00093 for (i = 0; i < N; i++) {
00094 lregress::point p( X[i], Y[i] );
00095 data.push_back( lregress::point( p ) );
00096 }
00097 }
00098
00099
00100 main()
00101 {
00102 lregress lr;
00103 lregress::lineInfo info;
00104
00105 vector<lregress::point> data;
00106 init_data( data );
00107 const size_t N = data.size();
00108
00109 size_t i;
00110
00111 for (i = 0; i < N; i++) {
00112
00113 }
00114
00115 lr.lr( data, info );
00116
00117 printf("b (slope) = %7.4f, a (intercept) = %7.4f\n",
00118 info.slope(),
00119 info.intercept()
00120 );
00121 printf(" slopeErr = %7.4f, stddev = %7.4f, corr = %7.4f\n",
00122 info.slopeErr(), info.stddev(), info.corr() );
00123
00124 double yPrime;
00125 for (i = 0; i < N; i++) {
00126 yPrime = info.intercept() + (info.slope() * data[i].x());
00127
00128 }
00129
00130 }