верно ли использовать normrand для распределения Гаусса в Matlab? - PullRequest
0 голосов
/ 24 апреля 2020

Я хочу написать простую линейную регрессию в 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)

1 Ответ

0 голосов
/ 24 апреля 2020

Вы можете получить два коэффициента регрессии, просто используя 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

enter image description here

...