最近在做回归分析方面的东西,网上查阅相关资料,通过实际调试,对调试结果进行总结。
回归分析法指利用数据统计原理,对大量统计数据进行数学处理,并确定因变量与某些自变量的相关关系,建立一个相关性较好的回归方程(函数表达式),并加以外推,用于预测今后的因变量的变化的分析方法。根据因变量和自变量的个数分为:一元回归分析和多元回归分析;根据因变量和自变量的函数表达式分为:线性回归分析和非线性回归分析。
1、根据因变量和自变量的个数来分类:一元回归分析和多元回归分析;
2、根据因变量和自变量的函数表达式来分类:线性回归分析和非线性回归分析。
回归分析法主要解决的问题:
1、确定变量之间是否存在相关关系,若存在,则找出数学表达式;
2、根据一个或几个变量的值,预测或控制另一个或几个变量的值,且要估计这种控制或预测可以达到何种精确度。
回归分析法的步骤如下:
1、根据自变量与因变量的现有数据以及关系,初步设定回归方程;
2、求出合理的回归系数;
3、进行相关性检验,确定相关系数;
4、在符合相关性要求后,即可根据已得的回归方程与具体条件相结合,来确定事物的未来状况,并计算预测值的置信区间。
**有效性:**用回归分析法进行预测首先要对各个自变量做出预测。若各个自变量可以由人工控制或易于预测,而且回归方程也较为符合实际,则应用回归预测是有效的,否则就很难应用;
**注意事项:**为使回归方程较能符合实际,首先应尽可能定性判断自变量的可能种类和个数,并在观察事物发展规律的基础上定性判断回归方程的可能类型;其次,力求掌握较充分的高质量统计数据,再运用统计方法,利用数学工具和相关软件从定量方面计算或改进定性判断。
先写OLS.m的M文件,用来代替regress函数
function [beta_0 beta_1]=OLS(y,x)
%Ordinary Linear Regression
%其中 x,y 为样本构成的向量;
%回归方程为 Simple regression: y=beta_0+x*beta_1+u;
%y_mean=mean(y);
%x_mean=mean(x);
%beta_1=((x-x_mean)*(y-y_mean)')/((x-x_mean)*(x-x_mean)');
%beta_0=y_mean-beta_1*x_mean;
%其中 u 为服从 N(0,sigma^2)随机变量;
y_mean=mean(y);
x_mean=mean(x);
beta_1=((x-x_mean)*(y-y_mean)')/((x-x_mean)*(x-x_mean)');
beta_0=y_mean-beta_1*x_mean;
end
然后写Solve_OLS.m的M文件,用来进行模拟;
function [b_0 b_1]=Solve_OLS(beta_0,beta_1,n,a,b,sigma)
%已知 beta_0,beta_1,由 OLS 回归得 b_0,b_1.两者进行比较得到估计效果;
%y=beta_0+beta_1*x+u 来得到;
%x 为随机向量,u 为服从 N(0,sigma^2)随机变量;
%n 为模拟数据量,比如 1,10,100,1000 等;
%x=a+b*rand(1,n);%产生(a,a+b)区间上的随机向量;
%mu= ;sigma= ;%随机矩阵服从均值为 mu,方差为 sigma 的正态分布
%M= ;N= %M,N 为产生[M,N]的随机矩阵
%x=mu+sqrt(sigma)*randn(M,N);%x 为新生成的矩阵[M,N],服从均值为 mu,方差为 sigma 的正态分布;
x=a+b*rand(1,n);%产生(a,a+b)区间上的随机向量;
%随机矩阵服从均值为 0,方差为 sigma 的正态分布
u=sqrt(sigma)*randn(1,n);
y=beta_0+beta_1*x+u;
%用 OLS 函数进行回归即可:[beta_0 beta_1]=OLS(y,x);
[b_0 b_1]=OLS(y,x);
sprintf('已知参数\n\tbeta_0=%0.5g\n\tbeta_1=%0.5g\n 模拟后,OLS 估计值为\n\tbeta_0=%0.5g\n\tbeta_1=%0.5g',beta_0,beta_1,b_0,b_1)
实现结果:
>> [b_0 b_1]=Solve_OLS(20,0.7,2,1,99,1)
ans =
已知参数
beta_0=20
beta_1=0.7
模拟后,OLS 估计值为
beta_0=-10.527
beta_1=1.0462
b_0 =
-10.526596648236350
b_1 =
1.046173953504647
>> [b_0 b_1]=Solve_OLS(20,0.7,100,1,99,1)
ans =
已知参数
beta_0=20
beta_1=0.7
模拟后,OLS 估计值为
beta_0=19.959
beta_1=0.6994
b_0 =
19.959265445464375
b_1 =
0.699398956547863
>> [b_0 b_1]=Solve_OLS(20,0.7,10000,1,99,1)
ans =
已知参数
beta_0=20
beta_1=0.7
模拟后,OLS 估计值为
beta_0=19.989
beta_1=0.7002
b_0 =
19.988943598135016
b_1 =
0.700196440073060
>>