Земля планета              Об авторе сайта                                                             Статистика, картография и ГИС!


             Комментарии          

Программа
c*Программа для расчета статистик без справочника
*работает с данными представленными в мг/кг или других без
*изменения величин Автор В.Д.Брусницын

PROCEDURE stat
SET TALK OFF
SET NULL ON
DEFINE POPUP OBJ_FIL PROMPT FILES LIKE *.DBF MESSAGE "ОТКРЫТЬ ФАЙЛ ДЛЯ РАСЧЕТА СТАТИСТИКИ";
   TITLE "ОТКРЫТЬ ФАЙЛ ДЛЯ РАСЧЕТА СТАТИСТИКИ"
ON SELECTION POPUP OBJ_FIL DEACTIVATE POPUP OBJ_FIL
ACTIVATE POPUP OBJ_FIL
USE PROMPT() NOUPDATE
vorname = PROMPT()
vorname = SUBSTR(vorname,1,LEN(vorname)-6)
imia = "TM"
imia1 = "ST"
viv_file =vorname+ALLTRIM(imia)+'.dbf'
viv_fil1 =vorname+ALLTRIM(imia1)+'.dbf'
viv_fil2 =vorname+ALLTRIM(imia1)+'.xls'
COPY TO &viv_file
USE &viv_file IN 1
beg  = f_fiel()
ende = FCOUNT()
FOR ii = beg TO ende
   pii=FIELD(ii)
   ALTER TABLE &viv_file ALTER COLUMN &pii N(16,9)
ENDFOR
CREATE TABLE &viv_fil1 (Элемент C(10), Кол_проб N(10), Кол_0 N(10), Кол_null N(10), Mин_неO N(8,3),;
   Максимум N(7,2), Медиана N(7,3), Ар_среднее N(7,3), АрСтандарт N(6,3), Ар_вариац N(5,2), СтАсимметр N(6,2), Ст_Эксцесс N(6,2),;
   lgСреднее N(7,3), lgСтандарт N(6,3), НесмещСр N(7,3), lgВариация N(5,2), lgАсимметр N(6,2), lgЭксцесс N(6,2), lg2_5 N(7,3), lg97_5 N(7,3))
SELE 1
COUNT TO NOB
GO TOP
FOR iii = beg TO ende
   pii = FIELD(iii)
   COUNT FOR EVAL(pii) = 0 TO noly
   COUNT FOR ISNULL(&pii)=.T. TO nully
   COUNT TO N FOR ISNULL(EVAL(pii))=.F.
   CALC MIN(EVAL(pii)) FOR EVAL(pii) # 0 AND ISNULL(&pii)=.F. TO mins
   CALC MAX(EVAL(pii)) TO MAXs
   REPL &pii WITH RAND()*mins FOR EVAL(pii)=0
   CALC MIN(EVAL(pii)) FOR EVAL(pii) # 0 AND ISNULL(&pii)=.F. TO mins1
   REPL &pii WITH mins1 FOR EVAL(pii)=0
   med=medianal(iii, NOB, nully)
   SUM(EVAL(pii)) TO arsum FOR ISNULL(EVAL(pii))=.F.
   SUM(LOG10(EVAL(pii))) TO lgsum FOR ISNULL(EVAL(pii))=.F.

   arsred = arsum/N
   lgsred = lgsum/N

   SUM((EVAL(pii)-arsred)^2) TO sumkv FOR ISNULL(EVAL(pii))=.F.
   SUM((LOG10(EVAL(pii))-lgsred)^2) TO lgsumkv FOR ISNULL(EVAL(pii))=.F.

   SUM((EVAL(pii)-arsred)^3) TO sumkub FOR ISNULL(EVAL(pii))=.F.
   SUM((LOG10(EVAL(pii))-lgsred)^3) TO lgsumkub FOR ISNULL(EVAL(pii))=.F.

   SUM((EVAL(pii)-arsred)^4) TO sumsq FOR ISNULL(EVAL(pii))=.F.
   SUM((LOG10(EVAL(pii))-lgsred)^4) TO lgsumsq FOR ISNULL(EVAL(pii))=.F.

   arstand = SQRT(sumkv/(N-1))
   lgstand = SQRT(lgsumkv/(N-1))
   anesm = 10^(lgsred+1.15*lgstand^2)

   arvari =  arstand/arsred
   lgvari =  SQRT(10^(2.3*lgstand^2)-1)

   stasim = sumkub/N/arstand^3/SQRT(6/N)
   lgstasim = lgsumkub/N/lgstand^3/SQRT(6/N)
   stex = (sumsq/N/arstand^4-3)/2/SQRT(6/N)
   lgstex = (lgsumsq/N/lgstand^4-3)/2/SQRT(6/N)
   dov25= lgsred-1.96*lgstand/SQRT(N)
   dov975= lgsred+1.96*lgstand/SQRT(N)
   INSERT INTO &viv_fil1(Элемент, Кол_проб, Кол_0, Кол_null, Mин_неO,;
   Максимум, Медиана, Ар_среднее, АрСтандарт, Ар_вариац, СтАсимметр, Ст_Эксцесс,;
   lgСреднее, lgСтандарт, НесмещСр, lgВариация, lgАсимметр, lgЭксцесс, lg2_5, lg97_5);
      VALUES (pii, NOB, noly, nully, mins, MAXs, med, arsred, arstand, arvari, stasim , stex,;
      10^lgsred, 10^lgstand, anesm, lgvari, lgstasim , lgstex, 10^dov25, 10^dov975)
   SELE 1
ENDFOR
CLOSE ALL
USE &viv_fil1 IN 1
COPY TO &viv_fil2 TYPE XL5
CLOSE ALL

     PROCEDURE medianal
   PARAMETERS numpole, Vsegos, nully
   usego = Vsegos- nully
   DIME county( Vsegos)
   pole=FIELD(numpole)
   GO TOP
   FOR aa = 1 TO Vsegos
      county(aa) = EVAL(pole)
      SKIP
   ENDFOR
   =ASORT(county)
   IF MOD(usego,2)=1
      seredina=(usego+1)/2 + nully
      mediana=county(seredina)
   ELSE
      IF usego>2
         seredina1=(usego)/2+nully
         mediana=(county(seredina1)+county(seredina1+1))/2
      ELSE
         mediana=(county(1+nully)+county(2+nully))/2
      ENDIF
   ENDIF
   RETURN mediana

На главную страницу
        brusmann@mail.ru   AbacusComp@yandex.ru                                           © Василий Брусницын. Ивдель-Екатеринбург, 2010 г.     Св. обл. Мотив +79045490809                                     

Сайт управляется системой uCoz