楼主: 八宝饭愿
12338 1

[问答] MATLAB做t分布分位数的问题 [推广有奖]

  • 0关注
  • 0粉丝

本科生

77%

还不是VIP/贵宾

-

威望
0
论坛币
63 个
通用积分
0
学术水平
0 点
热心指数
1 点
信用等级
0 点
经验
2187 点
帖子
77
精华
0
在线时间
103 小时
注册时间
2010-10-11
最后登录
2015-11-6

楼主
八宝饭愿 发表于 2011-3-23 23:49:36 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
请教一下如何用MATLAB做出t分布在95%水平下的分位数呢???多谢!!!!!
二维码

扫码加我 拉你入群

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

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

关键词:MATLAB atlab matla Atl Lab MATLAB 位数

沙发
枭狼 发表于 2011-5-17 17:27:37
function y0 = ft(n,pt)

if pt < 0 || pt > 1
    disp('输入有误,请输入[0 1]区间的数值')
elseif 0.5 <= pt && pt < 1
    p1 = 2 * (1-pt);
    tp = sqrt(n/fbeta(n,p1) - n);
elseif 0 < pt && pt < 0.5
    p2 = 2*pt;
    tp = -sqrt(n/fbeta(n,p2) - n);
elseif pt == 1
    tp = inf;
else
    tp = 0;
end
y0 = tp;

%beta分布的分位数计算
function y1=fbeta(n,p)

b = 1;
a = 0;
if abs(f(b,n,p)) < 1e-10
    y1 = b;
else
    while abs(b - a) > 1e-6
     tb = (b + a)/2;
     if abs(f(tb,n,p)) < 1e-10
         y1 = tb;
         break;
     elseif f(tb,n,p) * f(b,n,p) < 0
        a = tb;
     else
        b = tb;        
     end     
    end
    y1 = tb;
end


%beta分布方程f = I(a,b) - p
function y2=f(z,n,p)

syms x t;
f1=int(t^(n/2-1)*(1-t)^(-0.5),0,'x');
f2=f1/beta(n/2,0.5);
f3=f2-p;
f3=subs(f3,x,z);
y2=eval('f3');

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-26 22:43