如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
多元回归分析计算法分析与程序算法分析与描述2.主要的变量N:样本数P:变量个数NN:预测用的新样本数X(N,P):变量的原始数据x1,x2,…..xpY(N):Y的原始值XMEAN(P):变量的均值YMEAN:Y的均值L(P,P):正规方程矩阵系数LY(P):正规方程右侧的常数项矩阵C(P,P):矩阵L的逆矩阵B(P):回归方程系数2.主要的变量(续)LYY:离差平方和U:回归平方和Q:残差平方和F:F检验值,方程R:复相关系数SY:标准差TI(P):回归系数的t检验值FI(P):回归系数的F检验值VI(P):偏回归平方和RI(P):变量的偏相关系数3.需要支持的参数若运行该程序,需要键盘输入以下参数:N样本数、P变量个数、NN预测用的新样本数4.原始数据的范围:x11x12x13…x1py1x21x22x23…x2py2…Xn1xn2xn3…xnpyn5.主要的计算结果:回归方程;方差分析表;回归方程显著性检验统计量:F,R7.程序7.1从指定数据文件读取原始数据的输入函数,原始数据文件名:expdata1.dat。调用成功函数返回数据的个数,数据存放到二维数组x中。如果调用不成功,返回-1.intReadDat(floatxx[][P],floaty[]){FILE*fp;inti=0,j,k;floatyy[100][P+1];if((fp=fopen("expdata1.dat","rb"))==NULL)return-1;while(!feof(fp)){fread(yy[i],sizeof(float),P+1,fp);/*将数据读入工作单元yy*/i++;}fclose(fp);for(k=0;k<i;k++){for(j=0;j<P;j++)xx[k][j]=yy[k][j];/*自变量xi的观测值*/y[k]=yy[k][P];/*应变量y的观测值*/}returni;}7.4计算正规方程的系数矩阵L[I][J]的逆矩阵C[I][J]。voidjzqiuni(floats[][P],floatc[][P])/*s[][P+1]:(P+1)*(P+1)二维数组存放待求逆的矩阵;C[][P+1]:(P+1)*(P+1)二维数组存放s[][P+1]的逆矩阵*/S[P+1][P+1]是工作单元,在调用该函数前,将要求逆的矩阵复制到数组S中。voidjzqiuni(floats[][P+1],floatc[][P+1]){intk,i,j,p;floatA;p=P+1;for(k=0;k<p;k++){A=1/s[k][k];for(i=0;i<p;i++){for(j=0;j<p;j++)if(i!=k&&j!=k)s[i][j]=s[i][j]-s[i][k]*s[k][j]*A;}for(j=0;j<p;j++){s[k][j]=s[k][j]*A;s[j][k]=-s[j][k]*A;}s[k][k]=A;}for(i=0;i<p;i++){for(j=0;j<p;j++){c[i][j]=s[i][j];printf("%.6f",c[i][j]);}printf("\n");}/*nextk*/}7.5根据公式b=A-1B求解回归系数bi。其中A-1是正规方程的系数矩阵的逆矩阵(在本例中即为矩阵c),B是右端常数项矩阵(在本例中即为LY),求得的回归系数放在数组b(本例为B)中。只要调用矩阵乘法即可求得。voidjzcf1(floatc[N1][P+1],floatLY[P+1],intn1,floatB[P+1]){inti,j,k,p;floatxd;p=P+1;for(i=0;i<n1;i++){xd=0;for(k=0;k<p;k++)xd=xd+c[i][k]*LY[k];B[i]=xd;}}7.6计算打印方差分析表和复相关系数、标准差voidfin6(floatB[],floatLY[],floatymean,float*U,float*Q,float*F,intn,intp,float*lyy)/*R:复相关系数,SY:剩余标准差,ymean::y的均值*,/{intj;floatR,SY;*U=0;*lyy=0;for(j=1;j<p+1;j++)U=U+B(j)*LY[j];/*U是回归平方和*/for(j=0;j<n;j++)*lyy=*lyy+(Y[j]-ymean)*(Y[j]-ymean);/*lyy总平方和*/Q=*