相关系数Rab

原创作品,转载请指明出处,谢谢!
#include <iostream>
#include <stdio.h>
#include <vector>
using namespace std;
struct Rab {
        int num;
        vector <float> age;
        vector <float>value;
        float age_avg,value_avg;

        void init() {
                for (int i=0; i<num; i++) {
                        age_avg+=age[i];
                        value_avg+=value[i];
                }
                age_avg = 1.0*age_avg/num;
                value_avg=1.0*value_avg/num;
        }
        float calc() {
                float age_std=0.0,value_std=0.0,sum=0.0;
                for(int i=0; i<num; i++) {
                        age_std+=((age[i]-age_avg)*(age[i]-age_avg));
                        value_std+=((value[i]-value_avg)*(value[i]-value_avg));
                        sum+=((age[i]-age_avg)*(value[i]-value_avg));
                }
                age_std=age_std/(1.0*num);
                value_std=value_std/(1.0*num);
                sum=sum/(1.0*num);
                return sum/(age_std*value_std);
        }
} R;

int main()
{
        freopen("in.txt","r",stdin);
        scanf("%d",&R.num);
        float age_tmp,value_tmp;
        for(int i=0; i<R.num; i++) {
                scanf("%f%f",&age_tmp,&value_tmp);
                R.age.push_back(age_tmp);
                R.value.push_back(value_tmp);
        }
        R.init();
        printf("%f\n",R.calc());
        return 0;
}

这个代码中间可能有点问题,太简单了我也没有查,大家看看做个参考吧!
下面给出测试数据:

18
23 9.5
23 26.5
27 7.8
27 17.8
39 31.4
41 25.9
47 27.4
49 27.2
50 31.2
52 34.6
54 42.5
54 28.8
56 33.4
57 30.2
58 34.1
58 32.9
60 41.2
61 35.7

 

posted on 2012-06-14 10:41  _Clarence  阅读(158)  评论(0编辑  收藏  举报

导航