matlab - 在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)
解决方案
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
推荐阅读
- python - 写入大量数据时为空 CSV 文件
- docker - 安装后如何开始使用 docker 版本的 hortonworks
- javascript - 设置偶数监听器以防止使用javascript在输入字段中出现默认设置时遇到问题
- php - jQuery:隐藏表格行
- c++ - 从向量中删除已完成的线程
- r - R:尝试使用另一个 data.table 对列进行操作时,data.table 中的奇怪行为
- git - 在变基出错后删除其他人在我的分支上的提交
- .net - 将 Ninject 与 Azure 移动应用后端一起使用
- jquery - 全容器视频丢弃响应式代码
- amazon-web-services - [亚马逊](500150) 错误设置/关闭连接:连接超时