楼主: wendyfighting
14271 7

[编程问题求助] stata如何编写函数,并且在主程序中调用 [推广有奖]

  • 0关注
  • 0粉丝

高中生

60%

还不是VIP/贵宾

-

威望
0
论坛币
114 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
135 点
帖子
12
精华
0
在线时间
36 小时
注册时间
2014-9-3
最后登录
2017-10-6

楼主
wendyfighting 发表于 2015-3-18 17:41:30 |AI写论文
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,或者根本没法做……
关键词:Stata tata 主程序 function stata程序 主程序 如何

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

藤椅
wendyfighting 发表于 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

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

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

地板
伟轩 发表于 2018-5-19 08:35:27 来自手机
自定义函数需要使用mata

7
flowerone 发表于 2019-1-14 10:47:08
请问楼主问题解决了吗?我也想解决类似的问题。

8
聪明的小石头 发表于 2020-2-16 17:51:11
flowerone 发表于 2019-1-14 10:47
请问楼主问题解决了吗?我也想解决类似的问题。
请使用mata模块

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2026-1-2 01:24