今日は、LCで勉強していました
いろいろな科目をやり最後に統計をやりました
その時これはプログラムしてやれば統計のテストは安全だと思い帰宅後ddkさんに相談
プログラミングを開始しました
なんとかできました
これで統計のテストは安全です
ソースコードを公開しますね
あくまで参考までに
間違いがあるかもしれません
私はまだ初心者なのでバグがあるかもしれません
ddkさんのやつの方が私のものより信頼がおけるとおもいますので実際のテストに使う場合はddkさんのものをご使用くださいね
このプログラムは、メイン関数の配列に入れた数値の平均、分散、回帰直線、相関係数を計算するものです
#include<stdio.h>
#include<math.h>
double avex(int x[],int n){
int i;
double ave=0;
for(i=0;i<n;i++){
ave=ave+x[i];
}
ave=ave/n;
printf("xの平均は%lfです\n",ave);
return ave;
}
double avey(int y[],int n){
int i;
double ave=0;
for(i=0;i<n;i++){
ave=ave+y[i];
}
ave=ave/n;
printf("yの平均は%lfです\n",ave);
return ave;
}
double disx(double ave,int x[],int n){
int i;
double dis;
dis=0;
for(i=0;i<n;i++){
dis=(x[i]*x[i])+dis;
}
ave =ave*ave;
dis=dis/n;
dis =dis-ave;
printf("xの分散は%lfです\n",dis);
return dis;
}
double disy(double ave,int x[],int n){
int i;
double dis;
dis=0;
for(i=0;i<n;i++){
dis=(x[i]*x[i])+dis;
}
ave =ave*ave;
dis=dis/n;
dis =dis-ave;
printf("yの分散は%lfです\n",dis);
return dis;
}
double cova(int n,int x[],int y[],double ave_x,double ave_y){
int i;
double xysum=0,xyave,cova;
for(i=0;i<n;i++){
xysum=(x[i]*y[i])+xysum;
}
xyave=ave_x * ave_y;
xysum=xysum/n;
cova=xysum-xyave;
printf("共分散は%lfです\n",cova);
return cova;
}
void regression(double ave_x,double ave_y,double cov,double dis_x){
double n,b;
n=cov/dis_x;
b=-1*(n*ave_x)+ave_y;
printf("回帰直線は y=%lfx+%lfです\n",n,b);
}
void correlation(double cov,double dis_x,double dis_y){
double d,co;
dis_x=sqrt(dis_x);
dis_y=sqrt(dis_y);
d=dis_x*dis_y;
co=cov/d;
printf("相関係数は%lfです\n",co);
}
int main(){
int x[]={5,3,6,10,4,7,7,3,9,6};//ここに値を入力
int y[]={7,8,4,8,3,6,10,2,5,5};//ここに値を入力
int n=10;//値の個数を入力
double ave_x,ave_y,dis_x,dis_y,cov,regression_line;
printf("回帰直線の式を計算します\n");
printf("平均の求め方はxまたはyの値をすべて足し、それを値の個数で割ります\n");
ave_x=avex(x,n);
ave_y=avey(y,n);
printf("分散の求め方は、xまたはyの値を自乗し足していきます。その値をxまたはyの値の個数で割ります。さらに平均の自乗をひきます。\n");
dis_x=disx(ave_x,x,n);
dis_y=disy(ave_y,y,n);
printf("回帰直線の求め方は、xとyの値をかけて足していきます。その値をxまたはyの値の個数で割ります。さらにxとyの平均を掛け合わせた値をひきます。そして、「y-(yの平均)=(共分散/(xの分散の自乗))*(x-(xの平均の値))」の式に代入します。\n");
cov = cova (n,x,y,ave_x,ave_y);
regression(ave_x,ave_y,cov,dis_x);
correlation(cov,dis_x,dis_y);
return 0;
}