Полезное для программистов:

Фриланс
Новости
Статьи
   
Рубрики:


Математическая статистика

Поиск:

Интервальная оценка среднего (рассмотрены случаи значений доверительной вероятности 0.95 и 0.99)

Код

//////////////////////////////////////////////////////////////////////////////
//
//  Calculating <x>, (x-dx,x+dx)
//  (c) Johna Smith, 1996
//
//  Method description:
//    dx=t(alpha,n)*Sn/sqrt(n)
//    <x>=Sum x/n
//
//////////////////////////////////////////////////////////////////////////////

#include <stdio.h>
#include <math.h>

#define N   6 // number of experiments
float x[N]={3,5,4,5,3,4}; // experimental data

double Student095(unsigned int n)
{
  double result;

  result=1.96+2.4/(n-1)+5.901610*pow(n-1,-2.372);

  return result;
}

double Student099(unsigned int n)
{
  double result;

  result=2.576+5.0/(n-1)+29.12178*pow(n-1,-2.591843);

  return result;
}

// this function calculates average x
double Average(void)
{
  double sum=0;

  for (int i=0;i<N;i++) sum+=x[i];

  return sum/N;
}

// this function calculates delta x
double DeltaX(void)
{
  double ave,sum=0,Sn;

  ave=Average();
  for (int i=0;i<N;i++) sum+=x[i]*x[i];
  Sn=sqrt(((double)N/(N-1))*((double)sum/N-ave*ave));

  return Student095(N)*Sn/sqrt(N); // you can use Student099 if you want
}

void main(void)
{
  printf("Data: ");
  for (int i=0;i<N;i++) printf("%f ",x[i]);
  printf("nx=%f +/- %f",Average(),DeltaX());
}



Вычисление коэффициента Стьюдента

Код

//////////////////////////////////////////////////////////////////////////////
//
//  Calculating Student's coefficients t(alpha,n), if alpha=0.95 or 0.99
//  (c) Johna Smith, 1996
//
//  Method description:
//   To calculate Student's coefficients we use the following
//  approximation:
//    t(n)=C0+C1/(n-1)+C2(n-1)^(-C3)
//  Coefficients Ci for alpha=0.95 and alpha=0.99 is given
//  n - number of experiments
//
//////////////////////////////////////////////////////////////////////////////

#include <stdio.h>
#include <math.h>

double Student095(unsigned int n)
{
  double result;

  result=1.96+2.4/(n-1)+5.901610*pow(n-1,-2.372);

  return result;
}

double Student099(unsigned int n)
{
  double result;

  result=2.576+5.0/(n-1)+29.12178*pow(n-1,-2.591843);

  return result;
}

void main(void)
{
  printf("alpha=0.95 n=5 t5= %gn",Student095(5));
  printf("alpha=0.99 n=15 t15= %g",Student099(15));
}



Теоретический коэффициент корреляции для двух величин

Код

//////////////////////////////////////////////////////////////////////////////
//
//  Calculating theoretical corellation coefficient for two values
//  (c) Johna Smith, 1996
//
//  Method description:
//    Corellation coefficient shows dependencies between two values
//
//////////////////////////////////////////////////////////////////////////////

#include <stdio.h>
#include <math.h>

#define N       3 // number of experiments

double x[N]={1,2,3};
double y[N]={2,4,5};

double TheoreticalCorellation(void)
{
  double sxy=0,sx2=0,sy2=0;

  for (int i=0;i<N;i++)
  {
    sxy+=x[i]*y[i];
    sx2+=x[i]*x[i];
    sy2+=y[i]*y[i];
  }

  return sxy/sqrt(sx2*sy2);
}

void main(void)
{
  printf("Data:n");
  for (int i=0;i<N;i++) printf("%f %fn",x[i],y[i]);
  printf("nCorellation coefficient r= %fn",TheoreticalCorellation());
}



Сглаживание экспериментальных данных по 3 точкам

Код

//////////////////////////////////////////////////////////////////////////////
//
//  Smoothing experimental data by 3 points
//  (c) Johna Smith, 1996
//
//  Method description:
//    We smooth experimental data to enclose them to real curve.
//    All formulas use smallest sqares method to approximate data.
//    This program uses smoothing using 3-points groups
//
//////////////////////////////////////////////////////////////////////////////

#include <stdio.h>
#include <math.h>

#define N 10      // number of experiments

float data[N]={0.9,2.12,2.92,4.15,4.9,6.1,6.92,8.15,9.05,9.8};
float smoothed[N];

void main(void)
{
  printf("Data:n");
  for (int i=0;i<N;i++) printf("%.4f ",data[i]);

  //smoothing
  smoothed[0]=(5*data[0]+2*data[1]-data[2])/6;
  for (i=1;i<N-1;i++) smoothed[i]=(data[i-1]+data[i]+data[i+1])/3;
  smoothed[N-1]=(5*data[N-1]+2*data[N-2]-data[N-3])/6;

  printf("nSmoothed data:n");
  for (i=0;i<N;i++) printf("%.4f ",smoothed[i]);
}



Сглаживание экспериментальных данных по 5 точкам

Код

//////////////////////////////////////////////////////////////////////////////
//
//  Smoothing experimental data by 5 points
//  (c) Johna Smith, 1996
//
//  Method description:
//    We smooth experimental data to enclose them to real curve.
//    All formulas use smallest sqares method to approximate data.
//    This program uses smoothing using 5-points groups
//
//////////////////////////////////////////////////////////////////////////////

#include <stdio.h>
#include <math.h>

#define N  10      // number of experiments

float data[N]={0.9,2.12,2.92,4.15,4.9,6.1,6.92,8.15,9.05,9.8};
float smoothed[N];

void main(void)
{
  printf("Data:n");
  for (int i=0;i<N;i++) printf("%.4f ",data[i]);

  //smoothing
  smoothed[0]=(3*data[0]+2*data[1]+data[2]-data[4])/5;
  smoothed[1]=(4*data[0]+3*data[1]+2*data[2]+data[3])/10;
  for (i=2;i<N-2;i++) smoothed[i]=(data[i-2]+data[i-1]+data[i]+
                                   data[i+1]+data[i+2])/5;
  smoothed[N-2]=(data[N-4]+2*data[N-3]+3*data[N-2]+4*data[N-1])/10;
  smoothed[N-1]=(3*data[N-1]+2*data[N-2]+data[N-3]-data[N-5])/5;

  printf("nSmoothed data:n");
  for (i=0;i<N;i++) printf("%.4f ",smoothed[i]);
}



Сглаживание экспериментальных данных по 7 точкам

Код

//////////////////////////////////////////////////////////////////////////////
//
//  Smoothing experimental data by 7 points
//  (c) Johna Smith, 1996
//
//  Method description:
//    We smooth experimental data to enclose them to real curve.
//    All formulas use smallest sqares method to approximate data.
//    This program uses smoothing using 7-points groups
//
//////////////////////////////////////////////////////////////////////////////

#include <stdio.h>
#include <math.h>

#define N 10      // number of experiments

float data[N]={0.7,1.08,1.39,1.64,1.76,1.99,2.04,2.22,2.28,2.42};
float smoothed[N];

void main(void)
{
  printf("Data:n");
  for (int i=0;i<N;i++) printf("%.4f ",data[i]);

  //smoothing
  smoothed[0]=(39*data[0]+8*data[1]-4*(data[2]+data[3]-data[5]) + data[4]-2*data[6])/42;
  smoothed[1]=(8*data[0]+19*data[1]+16*data[2]+6*data[3]-4*data[4] - 7*data[5]+4*data[7])/42;
  smoothed[2]=(-4*data[0]+16*data[1]+19*data[2]+12*data[3]+2*data[4] - 4*data[5]+data[6])/42;

  for (i=3;i<N-3;i++)
    smoothed[i]=(7*data[i]+6*(data[i-1]+data[i+1]) +
          3*(data[i-2]+data[i+2])-2*(data[i-3]+data[i+3]))/21;

  smoothed[N-3]=(data[N-7]-4*data[N-6]+2*data[N-5]+12*data[N-4] +
          9*data[N-3]+16*data[N-2]-4*data[N-1])/42;
  smoothed[N-2]=(4*data[N-7]-7*data[N-6]-4*data[N-5]+6*data[N-4] +
          16*data[N-3]+19*data[N-2]+8*data[N-1])/42;
  smoothed[N-1]=(-2*data[N-7]+4*data[N-6]+data[N-5]-4*data[N-4] -
          4*data[N-3]+8*data[N-2]+39*data[N-1])/42;

  printf("nSmoothed data:n");
  for (i=0;i<N;i++) printf("%.4f ",smoothed[i]);
}



Эмпирический коэффициент корреляции для двух величин

Код

//////////////////////////////////////////////////////////////////////////////
//
//  Calculating empirical corellation coefficient for two values
//  (c) Johna Smith, 1996
//
//  Method description:
//    Corellation coefficient shows dependencies between two values
//
//////////////////////////////////////////////////////////////////////////////

#include <stdio.h>
#include <math.h>

#define N 3 // number of experiments

double x[N]={1,2,3};
double y[N]={2,4,5};

double EmpiricalCorellation(void)
{
  double sxy=0,sx2=0,sy2=0,sx=0,sy=0;

  for (int i=0;i<N;i++)
  {
    sxy+=x[i]*y[i];
    sx2+=x[i]*x[i];
    sy2+=y[i]*y[i];
    sx+=x[i];
    sy+=y[i];
  }

  return (sxy-sx*sy/N)/(sqrt(sx2-sx*sx/N)*sqrt(sy2-sy*sy/N));
}

void main(void)
{
  printf("Data:n");
  for (int i=0;i<N;i++) printf("%f %fn",x[i],y[i]);
  printf("nCorellation coefficient r= %fn",EmpiricalCorellation());
}



Эмпирический коэффициент корреляции для трех величин

Код

//////////////////////////////////////////////////////////////////////////////
//
//  Calculating corellation coefficient for three values
//  (c) Johna Smith, 1996
//
//  Method description:
//    Corellation coefficient shows dependencies between three values
//
//////////////////////////////////////////////////////////////////////////////

#include <stdio.h>
#include <math.h>

#define N   3 // number of experiments

double x[N]={1,2,3};
double y[N]={2,4,5};
double z[N]={1,7,0};

double EmpiricalCorellation2D(double *i, double *j)
{
  double sij=0,si2=0,sj2=0,si=0,sj=0;

  for (int a=0;a<N;a++)
  {
    sij+=*(i+a)**(j+a);
    si2+=*(i+a)**(i+a);
    sj2+=*(j+a)**(j+a);
    si+=*(i+a);
    sj+=*(j+a);
  }

  return (sij-si*sj/N)/(sqrt(si2-si*si/N)*sqrt(sj2-sj*sj/N));
}

double Corellation3D(void)
{
  double rxz,ryz,rxy;

  // calculating partial corellation coefficients
  rxy=EmpiricalCorellation2D(x,y);
  rxz=EmpiricalCorellation2D(x,z);
  ryz=EmpiricalCorellation2D(y,z);

  return sqrt((rxz*rxz-ryz*ryz-2*rxy*rxz*ryz)/(1-rxy*rxy));
}

void main(void)
{
  printf("Data:n");
  for (int i=0;i<N;i++) printf("%f %f %fn",x[i],y[i],z[i]);
  printf("nCorellation coefficient R= %fn",Corellation3D());
}



Частный коэффициент корреляции для трех величин

Код

//////////////////////////////////////////////////////////////////////////////
//
//  Calculating partial corellation coefficient for three values
//  (c) Johna Smith, 1996
//
//  Method description:
//   Partial corellation coefficient shows dependencies between two values
//   using set of three values (we exclude influence of one of these values)
//
//////////////////////////////////////////////////////////////////////////////

#include <stdio.h>
#include <math.h>

// excluding influence of z, recieving corellation
// coefficients between x,y  y,z and x,z
double PartialCorellation3D(double rxy,double rxz,double ryz)
{
  return (rxy-rxz*ryz)/sqrt((1-rxz*rxz)*(1-ryz*ryz));
}

void main(void)
{
  double rxy=0.998753,rxz=0.69753,ryz=0.7473;

  printf("Data:n");
  printf("%f %f %fn",rxy,rxz,ryz);
  printf("nPartial corellation coefficient r= %.10fn",
  PartialCorellation3D(rxy,rxz,ryz));
}
Сайт: forum.vingrad.ru






Просмотров: 2339

 

 

Новые статьи:


Популярные:
  1. Как сделать цикличным проигрывание MIDI-файла?
  2. Создание AVI файла из рисунков
  3. Как устройство "отключить в данной конфигурации"?
  4. Kто в данный момент присоединен через Сеть?
  5. Как узнать количество доступной памяти?
  6. Как реализовать в RichEdit разноцветный текст?
  7. Как скрыть свое приложение от ProcessViewer
  8. Как программно нажать/скрыть/показ кнопку "Start"?
  9. Модуль работы с ресурсами в PE файлах
10. Функции вызова диалоговых окон выбора
11. Проверка граматики средствами Word'а из Delphi.
12. Модуль для упрощенного вызова сообщений
13. Функции для записи и чтение своих данных в, ЕХЕ- файле
14. Рекурсивный просмотр директорий
15. Network Traffic Monitor
16. Разные модули
17. Универсальная функция для обращения к любым экспортируем функциям DLL
18. Библиотека от VladS
19. Протектор для UPX'а
20. Еще об ICQ, сообщения по контакт листу?
21. Использование открытых интерфейсов
22. Теория и практика использования RTTI
23. Работа с TApplication
24. Примеры использования Drag and Drop для различных визуальных компонентов
25. Что такое порт? Правила для работы с портами
26. Симфония на клавиатуре
27. Загрузка DLL
28. Исправление автоинкремента
29. Взаимодействие с чужими окнами
30. Проверить дубляжи в столбце


 

 

 
 
На главную