悬赏 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,或者根本没法做……