c语言编程求一元线性回归Word格式.docx
- 文档编号:22100085
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:8
- 大小:65.24KB
c语言编程求一元线性回归Word格式.docx
《c语言编程求一元线性回归Word格式.docx》由会员分享,可在线阅读,更多相关《c语言编程求一元线性回归Word格式.docx(8页珍藏版)》请在冰豆网上搜索。
count)
{
i,
j;
free(d);
for
(i
=
0;
i
<
count;
++)
free(dat[i]);
free(dat);
}
//
解线性方程。
data[count*(count+1)]矩阵数组;
count:
方程元数;
Answer[count]:
求解数组
。
返回:
0求解成功,-1无解或者无穷解
LinearEquations(double
*data,
count,
*Answer)
j,
m,
n;
tmp,
*d
data;
dat
(double**)malloc(count
*
sizeof(double*));
(m
m
++,
d
+=
(count
+
1))
dat[m]
(double*)malloc((count
1)
sizeof(double));
memcpy(dat[m],
d,
count
-
1;
如果主对角线元素为0,行交换
(n
n
&
dat[m][m]
==
0.0;
if
(
dat[n][m]
!
0.0)
memcpy(d,
dat[m],
dat[n],
memcpy(dat[n],
行交换后,主对角线元素仍然为0,无解,返回-1
(dat[m][m]
FreeData(dat,
count);
return
-1;
消元
tmp
/
dat[m][m];
(j
m;
j
dat[n][j]
-=
dat[m][j];
d[j]
求得count
1的元
Answer[count
1]
dat[count
1][count]
1][count
1];
逐行代入求各元
2;
>
--)
d[m]
Answer[j]
Answer[m]
(dat[m][count]
d[m])
求多元回归方程:
Y
B0
B1X1
B2X2
...BnXn
data[rows*cols]二维数组;
X1i,X2i,...Xni,Yi
(i=0
to
rows-1)
rows:
数据行数;
cols数据列数;
Answer[cols]:
返回回归系数数组(B0,B1...Bn)
SquarePoor[4]:
返回方差分析指标:
回归平方和,剩余平方和,回归平方差,剩余平方差
返回值:
0求解成功,-1错误
MultipleRegression(double
rows,
cols,
*Answer,
*SquarePoor)
n,
cols
*dat,
*p,
a,
b;
(data
0
||
Answer
rows
2
2)
(double*)malloc(cols
(cols
dat[0]
(double)rows;
++)
2
a
b
(p
data
rows;
p
cols)
*p;
(*p
*p);
dat[n
a;
dat[0,
n+1]
Sum(Xn)
dat[(n
1)]
dat[n+1,
0]
dat[n+1,n+1]
Sum(Xn
Xn)
n+1
(a
0.0,
data,
(p[n]
p[i]);
i+1]
Xi)
dat[(i
dat[i+1,
(b
0,
dat[cols]
cols]
Sum(Y)
p[count]);
Y)
LinearEquations(dat,
Answer);
计算方程式
方差分析
SquarePoor)
Y的平均值
SquarePoor[0]
SquarePoor[1]
1,
Answer[0];
cols;
Answer[i]);
Ym的估计值
((a
b)
b));
U(回归平方和)
((*p
a)
a));
Q(剩余平方和)(*p
Ym)
SquarePoor[2]
回归方差
if(rows-cols>
0.0)
SquarePoor[3]=SquarePoor[1]/(rows-cols);
//剩余方差
else
SquarePoor[3]=0.0;
举例验证以上程序:
data[15][5]
X1
X2
X3
X4
Y
{
316,
1536,
874,
981,
3894
},
385,
1771,
777,
1386,
4628
299,
1565,
678,
1672,
4569
326,
1970,
785,
1864,
5340
441,
1890,
2143,
5449
460,
2050,
709,
2176,
5599
470,
1873,
673,
1769,
5010
504,
1955,
793,
2207,
5694
348,
2016,
968,
2251,
5792
400,
2199,
944,
2390,
6126
496,
1328,
749,
2287,
5025
497,
1920,
952,
2388,
5924
533,
1400,
1452,
2093,
5657
506,
1612,
1587,
2083,
6019
458,
1613,
1485,
6141
};
Display(double
*SquarePoor,
v,
printf("
回归方程式:
%.5lf"
Answer[0]);
%.5lf*X%d"
Answer[i],
i);
"
);
回归显著性检验:
回归平方和:
%12.4lf
回归方差:
%12.4lf"
SquarePoor[0],
SquarePoor[2]);
剩余平方和:
剩余方差:
SquarePoor[1],
SquarePoor[3]);
离差平方和:
标准误差:
sqrt(SquarePoor[3]));
F
检
验:
相关系数:
SquarePoor[3],
sqrt(SquarePoor[0]
(SquarePoor[0]
SquarePoor[1])));
剩余分析:
观察值
估计值
剩余值
剩余平方"
dat;
v
*p
Answer[j];
%12.2lf%12.2lf%12.2lf%12.2lf"
v)
v));
system("
pause"
main()
Answer[5],
SquarePoor[4];
(MultipleRegression((double*)data,
15,
5,
Answer,
SquarePoor)
0)
Display((double*)data,
SquarePoor,
5);
运行结果见下图,同上面,查F分布表,F检验远远大于F0.005(4,10)的7.34,可以说是极度回归显著。
四、参考文献
[1]梁晋文,陈林才,何贡.误差理论与数据处理[M].北京:
中国计量出版社,2001
[2]苏金明,张莲花,刘波.MATLAB工具箱应用[M].北京:
电子工业出版社,2004
[3]聂桂根.MATLAB在测量数据测量中的应用[J].《测绘通报》,2001,2
[4]误差理论与数据处理(第五版)费业态,机械工业出版社
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 编程 一元 线性 回归