全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
14132 7
2015-03-18
悬赏 100 个论坛币 已解决
我有以下问题

1.这是一段 matlab 定义了一个函数的程序,如何把这个程序编到stata中????能帮我写一下具体的stata程序吗?
function y_cdf=aepdcdf(y, p1, p2, alpha,mu,sigma)
alphastar=alpha*kep(p1)/(alpha*kep(p1)+(1-alpha)*kep(p2));
[n m]=size(y);
for j=1:m
    for i=1:n
        if y(i,j)<=mu
            z1=(1/p1).*((abs((y(i,j))-mu)/(2*alphastar*sigma)).^p1);
            zz1=gammainc(z1, 1/p1);
            y_cdf(i,j)=(alpha.*(1.-zz1))';
        end
        if y(i,j)>mu
            z2=(1/p2)*((abs((y(i,j)-mu)/(2*(1-alphastar)*sigma))).^p2);
            y_cdf(i,j)=(alpha+(1-alpha).*gammainc(z2, 1/p2))';
        end
    end
end

2.stata能像matlab这样,只要把主程序和编写的函数(子程序)放在一个文件夹内,就可以调用吗??因为我的任务是把一堆matlab程序转换到stata中,这个matlab程序包括一个主程序,以及好多个子程序,并且子程序有调用子程序(也就是编写的函数),子程序调用子程序,主程序调用子程序如何实现??

拜托了


最佳答案

yangyuzhou 查看完整内容

如果是简单的程序可以在do文件中直接编写调用,如果更复杂的,可能需要重新设定ado文件了。具体到你这个问题,简单的比如那个kep(p)函数,可能不需要编程,直接用gen定义向量或者scalar定义标量就行了;而复杂的,尤其是涉及到矩阵运算的,可能要用到meta,或者根本没法做……
二维码

扫码加我 拉你入群

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

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

全部回复
2015-3-18 17:41:31
如果是简单的程序可以在do文件中直接编写调用,如果更复杂的,可能需要重新设定ado文件了。具体到你这个问题,简单的比如那个kep(p)函数,可能不需要编程,直接用gen定义向量或者scalar定义标量就行了;而复杂的,尤其是涉及到矩阵运算的,可能要用到meta,或者根本没法做……
二维码

扫码加我 拉你入群

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

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

2015-3-18 17:52:11
是不是函数太复杂啦,那就换这个简单的,但是我主要是想问stata如何编写函数,并且调用
function e_aepd=E_aepd(alpha,p1,p2)
w=alpha*kep(p1)+(1-alpha)*kep(p2);
e_aepd=((((1-alpha)^2)*p2*(gamma(2/p2))/(gamma(1/p2))^2)-((alpha)^2)...
    *p1*gamma(2/p1)/(gamma(1/p1))^2)/w;
end
二维码

扫码加我 拉你入群

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

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

2015-3-18 17:55:04
比如这个kep函数,如何编写???并在上一版的函数中调用
function y=kep(p)
y=1/((2*(p^(1/p)))*gamma(1+1/p)
二维码

扫码加我 拉你入群

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

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

2015-3-18 18:18:25
为什么没人回复??难道是一般不用stata去编写这样的函数吗???
是不是不用stata是遍主程序调用子程序这样??
二维码

扫码加我 拉你入群

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

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

2018-5-19 08:35:27
自定义函数需要使用mata
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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