全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 MATLAB等数学软件专版
1017 7
2013-10-28
刚刚学matlab,想做一个蒙特卡洛的模拟,但是每次运行时都会出现Undefined function 'ols' for input arguments of type 'double',不知道原因也不知道解决办法,快疯了,求各位大神指导,万分感谢。因为要用matlab做其它作业,所以比较急。
程序如下:
nobs = 1000; nvar = 2; ntrials = 10000;
beta = ones(nvar,1);
x = [ones(nobs,1) randn(nobs,nvar-1)];
bout = zeros(ntrials,nvar);
for i=1:ntrials;
     evec = randn(nobs,1);
     y = x*beta + evec;
     out=ols(y,x); bout(i,:)=out.beta';
end
bmean = mean(bout); bstd = std(bout); % find mean and std of bhats
fprintf(1,'Mean of the bhats \n');
for i=1:nvar; fprintf(1,'%8.4f \n',bmean(1,i)); end;
fprintf(1,'Std deviation of the bhats \n');
for i=1:nvar; fprintf(1,'%8.4f \n',bstd(1,i)); end;
hist(bout); ylabel('frequency of parameter outcomes');
xlabel('Estimated parameter values');
第八行的out=ols(y,x),到这里就运行不下去了
legend('\alpha','\beta_1')


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2013-10-28 19:55:16
因为你没有ols.m 这个文件。 可以用regress()函数替代。
out=ols(y,x); bout(i,:)=out.beta';

替换为
out=regress(y,x); bout(i,:)=out
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-10-28 20:00:40
Xaero 发表于 2013-10-28 19:55
因为你没有ols.m 这个文件。 可以用regress()函数替代。
out=ols(y,x); bout(i,:)=out.beta';
但是我用
which ols()能够看得见这个有m文件在路径里啊,怎么回事??
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-10-28 20:04:33
Xaero 发表于 2013-10-28 19:55
因为你没有ols.m 这个文件。 可以用regress()函数替代。
out=ols(y,x); bout(i,:)=out.beta';
而且替换以后还是不行,显示
Attempt to reference field of non-structure array.

Error in tutorial (line 8)
out=regress(y,x); bout(i,:)=out.beta';
????
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-10-28 20:13:11
bout(i,:)=out
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-10-28 20:24:12
Xaero 发表于 2013-10-28 20:13
bout(i,:)=out
我把bout(i,:)=out*beta改为bout=out*beta就行了,另外ols()换成regress(),谢谢大神。但是不懂不换ols()为什么也运行不了,ols()这个函数有M文件呀
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群