日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

计算t-test 的C程序

發布時間:2023/12/19 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 计算t-test 的C程序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
/*?gdb?output?? 程序還未調試成功:http://ubuntuforums.org/archive/index.php/t-412096.html ? */

/*(gdb)?run
Starting?program:?/home/nrh1/code/testt

Program?received?signal?SIGSEGV,?Segmentation?fault.
0x0804967f?in?var?()???
*/

/*?function?to?calculate?ttest?ttest.c
*/
#include?
<stdio.h>
#include?
<math.h>

#define?square(x)?(x*x)
void?ttest(double?*data1,?unsigned?int?n1,?double?*data2,?unsigned?int?n2,?double?*tstatistic,?double?*tprob);
int?main()

{

/*?declare?arrays?of?x?and?y?data?from?statistical?methods?in?cell?biology?2nd?edition?pg?45*/
double?a[8]=?{3.2,1.6,5.7,2.8,5.5,1.2,6.1,2.9};
double?b[8]=?{3.8,1.0,8.4,3.6,5.0,3.5,7.3,4.8};
unsigned?
int?na=8;
unsigned?
int?nb=8;
double*?t;
double?*prob;

ttest(?a,?na,?b,?nb,?
&t,?&prob);
printf(
"tvalue?%f\n",?&t);

printf(
"tvalue?%f\n",?&prob);
}?
/*?program?closing?brace????*/

/*uses?part?of?stats?lib?stats.c?the?relevant?functions?are?shown?below?ftest?code?is?nt?mine?but?works?very?well?I've?used?it?in?other?contexts???*/

/*
ttest?assumes?homogenity?of?variance,?uses?ftest?probability?code?to?calculate?probability?of?the?significance?of?the?t?statistic

*/


double?var(double?*data,?unsigned?int?n)
{
unsigned?
int?i;
double?average=0.0;
double?s,?temp,?var;

for?(i=0;?i<n;?n++)
average
=average+data[n];?/*?calculate?average???*/

average
=average/n;

var
=temp=s=0.0;?/*?now?variance??*/
for?(i=0;?i<n;?n++)
{
s
=data[n]-average;
temp
=temp+s;
var
=var+(s*s);

}
return?(var-temp*temp/n)/(n-1);
}?
/*?function?closing?brace???*/
/*?end?of?function?*/

void?ttest(double?*data1,?unsigned?int?n1,?double?*data2,?unsigned?int?n2,?double?*tstatistic,?double?*tprob)
{

double?nmean(unsigned?int?count,?double?*data);?/*?function?declarations?within?function????*/
double?pof(double?F,?unsigned?int?df1,?unsigned?int?df2);
double?var(double?*data,?unsigned?int?n);
double?svar=0.0;
double?var1=0.0;
double?var2=0.0;
double?mean1=0.0;
double?mean2=0.0;
double?df=0.0;
/*double?*tstatistic=0.0;??*/
/*double?*tprob=0.0?????*/

mean1
=nmean(n1,?data1);?/*calculate?means?for?individual?data?sets????*/
mean2
=nmean(n2,?data2);
var1
=var(data1,?n1);?/*calculate?variances?for?individual?data?sets?????*/
var2
=var(data2,?n2);
df
=n1+n2-2;?/*?calculate?overall?df?????????????????*/
svar
=((n1-1)*var1+(n2-1)*var2)/df;?/*?pooled?variance??*/
*tstatistic=(mean1-mean2)/sqrt(svar*(1.0/n1+1.0/n2));?/*?calculate?t?value????*/
*tprob=pof(((*tstatistic)*(*tstatistic)),?1,?df);?/*probability????????*/
}?
/*?function?closing?brace??????*/

/*?end?of?function?*/


/*FUNCTION?pof:?probability?of?F?*/
/*ALGORITHM?Compute?probability?of?F?ratio.

*/

/*
example?if?F=1.432923?and?df1=3?and?df2=5?p=0.337564
*/
double?pof(double?F,?unsigned?int?df1,?unsigned?int?df2)
{

int?i,?j;
int?a,?b;
double?w,?y,?z,?d,?p;

if?(F?<?F_EPSILON?||?df1?<?1?||?df2?<?1)
p
=1.0;
else
{
a?
=?df1%2???1?:?2;
b?
=?df2%2???1?:?2;
w?
=?(F?*?df1)?/?df2;

z?
=?1.0?/?(1.0?+?w);
if?(a?==?1)
if?(b?==?1)
{
p?
=?sqrt?(w);
y?
=?I_PI;?/*?1?/?3.14159?*/
d?
=?y?*?z?/?p;
p?
=?2.0?*?y?*?atan?(p);
}
else
{
p?
=?sqrt?(w?*?z);
d?
=?0.5?*?p?*?z?/?w;
}
else?if?(b?==?1)
{
p?
=?sqrt?(z);
d?
=?0.5?*?z?*?p;
p?
=?1.0?-?p;
}
else
{
d?
=?z?*?z;
p?
=?w?*?z;
}
y?
=?2.0?*?w?/?z;

for?(j?=?b?+?2;?j?<=?df2;?j?+=?2)
{
d?
*=?(1.0?+?a?/?(j?-?2.0))?*?z;
p?
=?(a?==?1???p?+?d?*?y?/?(j?-?1.0)?:?(p?+?w)?*?z);
}

y?
=?w?*?z;
z?
=?2.0?/?z;
b?
=?df2?-?2;
for?(i?=?a?+?2;?i?<=?df1;?i?+=?2)
{
j?
=?i?+?b;
d?
*=?y?*?j?/?(i?-?2.0);
p?
-=?z?*?d?/?j;
}
/*?correction?for?approximation?errors?suggested?in?certification?*/
if?(p?<?0.0)
p?
=?0.0;
else?if?(p?>?1.0)
p?
=?1.0;
p
=?(1.0-p);
return?p;
}
return?p;
}

總結

以上是生活随笔為你收集整理的计算t-test 的C程序的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。