首页 > 解决方案 > 在matlab中使用normrand进行高斯分布是真的吗

问题描述

我想在 Matlab 中编写简单的线性回归,我写了这段代码。这是工作,但我觉得不对劲!!我想出了点问题。如果你介意看看它;


clc,clear

h1 = normrnd(1:10,1);
P_re = normrnd(1:10,1);

n = numel(h1);

y = h1.*P_re;
y1 = sum(y);

sumH = sum(h1);
sumP = sum(P_re);

sumh_2 = sum((h1).^2);
sumh2 = (sum(h1))^2;

beta1 = ((n*y1) - sumH*sumP)/(n*(sumh_2)-(sumh2));
beta0 = mean(P_re) - beta1*mean(h1);

pRe = beta1*h1 + beta0;

plot(h1,P_re,'o')
hold on
plot(pRe,h1)

标签: matlablinear-regression

解决方案


polyfit您可以简单地使用拟合 1 次多项式来获得两个回归系数。此外,您的意思可能是plot(h1, pRe)而不是plot(h1, pRe)

clc,clear
h1 = normrnd(1:10,1); % x data
P_re = normrnd(1:10,1); % y data
beta = polyfit(h1, P_re, 1); % fit polynomial of order 1
pRe = beta(1)*h1 + beta(2); % or pRe = polyval(beta, h1)
plot(h1,P_re,'o') % plot data
hold on
plot(h1,pRe) % plot fitted line

在此处输入图像描述


推荐阅读