发布网友 发布时间:2023-12-12 13:23
共2个回答
热心网友 时间:14小时前
思路:A点横坐标设为,xA=40 在图中用红色*表示。 然后随机生成y的数据,通过A点的直线方程为
y-yA=k(x-xA) →y=kx-kxA+yA
通过ols法,求的是残差最小的斜率k进而得到直线的方程。
比较简单的用matlab弄了一下:
n=100;x=1:n;
y=10.*rand(n,1); x=x';
A=y(40);%A点的纵坐标 yA=y(40)
esum=@(k)sum((k.*x-(40*k+y(40)-y)).^2);%残差的2次方和
[k,fval]=fminsearch(esum,-2);%ols法 找出esum的最小值
subplot(2,1,1)
scatter(x,y);hold on;plot(40,y(40),'r*');hold on;plot(x,k*x-40*k+y(40));
title('运用ols法获得经过A点的直线');
subplot(2,1,2)
resid=y-(k*x-40*k+y(40));
plot(resid,'r');
title('残差图');
结果为下图,上图为通过A点运用ols法获得的直线;下图为扰动项的图。
热心网友 时间:14小时前
这个可以做,楼主可以联系我,具体操作比较麻烦 1551109497热心网友 时间:14小时前
思路:A点横坐标设为,xA=40 在图中用红色*表示。 然后随机生成y的数据,通过A点的直线方程为
y-yA=k(x-xA) →y=kx-kxA+yA
通过ols法,求的是残差最小的斜率k进而得到直线的方程。
比较简单的用matlab弄了一下:
n=100;x=1:n;
y=10.*rand(n,1); x=x';
A=y(40);%A点的纵坐标 yA=y(40)
esum=@(k)sum((k.*x-(40*k+y(40)-y)).^2);%残差的2次方和
[k,fval]=fminsearch(esum,-2);%ols法 找出esum的最小值
subplot(2,1,1)
scatter(x,y);hold on;plot(40,y(40),'r*');hold on;plot(x,k*x-40*k+y(40));
title('运用ols法获得经过A点的直线');
subplot(2,1,2)
resid=y-(k*x-40*k+y(40));
plot(resid,'r');
title('残差图');
结果为下图,上图为通过A点运用ols法获得的直线;下图为扰动项的图。
热心网友 时间:14小时前
这个可以做,楼主可以联系我,具体操作比较麻烦 1551109497