Announcement

Collapse
No announcement yet.
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Calculating Means and Standard Deviations over a range without duplication

    Hello,

    I am a novice in STATA and I am struggling to calculate the mean and standard deviations of a range in a non-overlapping way.

    Example as follows:

    Group A B C
    1 30 45 60
    1 44 70 26
    1 25 30 35
    1 10 27 46
    1 42 24 10
    2 98 77 66
    2 65 33 23
    2 23 24 27
    2 20 12 10
    2 60 45 28
    So basically I would like to calculate the mean and sd of Group 1 (3*5 blocks) and 2 (3*5 blocks) for A:C.

    Please advise.

    Thanks

    Kind Regards,
    Jacky

  • #2
    Here are two ways to do it:

    1. Classic. A loop over variables using egen

    2. Modern. Install rangestat using ssc inst rangestat

    Code:
    clear 
    input Group    A    B    C
    1    30    45    60
    1    44    70    26
    1    25    30    35
    1    10    27    46
    1    42    24    10
    2    98    77    66
    2    65    33    23
    2    23    24    27
    2    20    12    10
    2    60    45    28
    end 
    
    foreach v in A B C { 
        egen mean`v' = mean(`v'), by(Group)
        egen sd`v' = sd(`v'), by(Group)
    }
    
    rangestat (mean) A B C (sd) A B C, int(Group 0 0)
    Code:
    . list G *mean*
    
         +----------------------------------------------------------+
         | Group   meanA   meanB   meanC   A_mean   B_mean   C_mean |
         |----------------------------------------------------------|
      1. |     1    30.2    39.2    35.4     30.2     39.2     35.4 |
      2. |     1    30.2    39.2    35.4     30.2     39.2     35.4 |
      3. |     1    30.2    39.2    35.4     30.2     39.2     35.4 |
      4. |     1    30.2    39.2    35.4     30.2     39.2     35.4 |
      5. |     1    30.2    39.2    35.4     30.2     39.2     35.4 |
         |----------------------------------------------------------|
      6. |     2    53.2    38.2    30.8     53.2     38.2     30.8 |
      7. |     2    53.2    38.2    30.8     53.2     38.2     30.8 |
      8. |     2    53.2    38.2    30.8     53.2     38.2     30.8 |
      9. |     2    53.2    38.2    30.8     53.2     38.2     30.8 |
     10. |     2    53.2    38.2    30.8     53.2     38.2     30.8 |
         +----------------------------------------------------------+
    
    . 
    . list G *sd* 
    
         +----------------------------------------------------------------+
      1. | Group |      sdA |      sdB |      sdC |      A_sd |      B_sd |
         |     1 | 13.82751 | 19.01841 | 19.04731 | 13.827509 | 19.018412 |
         |----------------------------------------------------------------|
         |                                C_sd                            |
         |                            19.04731                            |
         +----------------------------------------------------------------+
    
         +----------------------------------------------------------------+
      2. | Group |      sdA |      sdB |      sdC |      A_sd |      B_sd |
         |     1 | 13.82751 | 19.01841 | 19.04731 | 13.827509 | 19.018412 |
         |----------------------------------------------------------------|
         |                                C_sd                            |
         |                            19.04731                            |
         +----------------------------------------------------------------+
    
         +----------------------------------------------------------------+
      3. | Group |      sdA |      sdB |      sdC |      A_sd |      B_sd |
         |     1 | 13.82751 | 19.01841 | 19.04731 | 13.827509 | 19.018412 |
         |----------------------------------------------------------------|
         |                                C_sd                            |
         |                            19.04731                            |
         +----------------------------------------------------------------+
    
         +----------------------------------------------------------------+
      4. | Group |      sdA |      sdB |      sdC |      A_sd |      B_sd |
         |     1 | 13.82751 | 19.01841 | 19.04731 | 13.827509 | 19.018412 |
         |----------------------------------------------------------------|
         |                                C_sd                            |
         |                            19.04731                            |
         +----------------------------------------------------------------+
    
         +----------------------------------------------------------------+
      5. | Group |      sdA |      sdB |      sdC |      A_sd |      B_sd |
         |     1 | 13.82751 | 19.01841 | 19.04731 | 13.827509 | 19.018412 |
         |----------------------------------------------------------------|
         |                                C_sd                            |
         |                            19.04731                            |
         +----------------------------------------------------------------+
    
         +----------------------------------------------------------------+
      6. | Group |      sdA |      sdB |      sdC |      A_sd |      B_sd |
         |     2 | 32.42992 | 24.83344 | 20.94517 | 32.429924 | 24.833445 |
         |----------------------------------------------------------------|
         |                                C_sd                            |
         |                           20.945167                            |
         +----------------------------------------------------------------+
    
         +----------------------------------------------------------------+
      7. | Group |      sdA |      sdB |      sdC |      A_sd |      B_sd |
         |     2 | 32.42992 | 24.83344 | 20.94517 | 32.429924 | 24.833445 |
         |----------------------------------------------------------------|
         |                                C_sd                            |
         |                           20.945167                            |
         +----------------------------------------------------------------+
    
         +----------------------------------------------------------------+
      8. | Group |      sdA |      sdB |      sdC |      A_sd |      B_sd |
         |     2 | 32.42992 | 24.83344 | 20.94517 | 32.429924 | 24.833445 |
         |----------------------------------------------------------------|
         |                                C_sd                            |
         |                           20.945167                            |
         +----------------------------------------------------------------+
    
         +----------------------------------------------------------------+
      9. | Group |      sdA |      sdB |      sdC |      A_sd |      B_sd |
         |     2 | 32.42992 | 24.83344 | 20.94517 | 32.429924 | 24.833445 |
         |----------------------------------------------------------------|
         |                                C_sd                            |
         |                           20.945167                            |
         +----------------------------------------------------------------+
    
         +----------------------------------------------------------------+
     10. | Group |      sdA |      sdB |      sdC |      A_sd |      B_sd |
         |     2 | 32.42992 | 24.83344 | 20.94517 | 32.429924 | 24.833445 |
         |----------------------------------------------------------------|
         |                                C_sd                            |
         |                           20.945167                            |
         +----------------------------------------------------------------+


    Comment


    • #3
      Maybe this approach (reshaping long) would also be helpful:

      Code:
       d
      
      . rename ( A B C) (v1 v2 v3)
      
      . gen id = _n
      
      . reshape long v, i(id) j(step)
      (note: j = 1 2 3)
      
      Data                               wide   ->   long
      -----------------------------------------------------------------------------
      Number of obs.                       10   ->      30
      Number of variables                   5   ->       4
      j variable (3 values)                     ->   step
      xij variables:
                                     v1 v2 v3   ->   v
      -----------------------------------------------------------------------------
      
      . label define mylab 1 "A" 2 "B" 3 "C"
      
      . label values step mylab
      
      . drop id
      
      . by Group step, sort : egen float mymean1 = mean(v)
      
      . by Group step, sort : egen float mysd1 = sd(v)
      
      . list
      
           +----------------------------------------+
           | step   Group    v   mymean1      mysd1 |
           |----------------------------------------|
        1. |    A       1   42      30.2   13.82751 |
        2. |    A       1   30      30.2   13.82751 |
        3. |    A       1   44      30.2   13.82751 |
        4. |    A       1   10      30.2   13.82751 |
        5. |    A       1   25      30.2   13.82751 |
           |----------------------------------------|
        6. |    B       1   45      39.2   19.01841 |
        7. |    B       1   24      39.2   19.01841 |
        8. |    B       1   27      39.2   19.01841 |
        9. |    B       1   30      39.2   19.01841 |
       10. |    B       1   70      39.2   19.01841 |
           |----------------------------------------|
       11. |    C       1   10      35.4   19.04731 |
       12. |    C       1   35      35.4   19.04731 |
       13. |    C       1   46      35.4   19.04731 |
       14. |    C       1   60      35.4   19.04731 |
       15. |    C       1   26      35.4   19.04731 |
           |----------------------------------------|
       16. |    A       2   23      53.2   32.42992 |
       17. |    A       2   65      53.2   32.42992 |
       18. |    A       2   20      53.2   32.42992 |
       19. |    A       2   60      53.2   32.42992 |
       20. |    A       2   98      53.2   32.42992 |
           |----------------------------------------|
       21. |    B       2   45      38.2   24.83344 |
       22. |    B       2   12      38.2   24.83344 |
       23. |    B       2   33      38.2   24.83344 |
       24. |    B       2   77      38.2   24.83344 |
       25. |    B       2   24      38.2   24.83344 |
           |----------------------------------------|
       26. |    C       2   28      30.8   20.94517 |
       27. |    C       2   23      30.8   20.94517 |
       28. |    C       2   66      30.8   20.94517 |
       29. |    C       2   27      30.8   20.94517 |
       30. |    C       2   10      30.8   20.94517 |
           +----------------------------------------+
      Best regards,

      Marcos

      Comment


      • #4
        Apologies guys, I have tired it out again. the numbers that returned are the averages of 1Column*5Rows --> 30.2 for Group 1 A.

        what I would like to achieve is to calculate the averages for Group 1 regardless of Group A,B, C.

        For group 1, it would be (30+44+25+10+42+45+70+30+27+24+60+26+35+46+10)/15 = 34.933333...

        Using the classic looping method. It doesn't work.

        Please advise.

        Thanks

        Kind Regards,
        Jacky
        Last edited by Cheuk Ki Man; 25 Jun 2018, 04:11.

        Comment


        • #5
          I believe you can handle this easily. Just exclude ‘step’ from the - egen - command shared to you above.
          Best regards,

          Marcos

          Comment


          • #6
            The average of A or B or C is just the average of A + B + C divided by 3.

            Comment


            • #7
              Nick gave the direct approach. If you wish to use - egen - for that matter, you just need to type:

              Code:
              . by Group, sort : egen float mymean2 = mean(v)
              . by Group, sort : egen float mysd2 = sd(v)
              . list Group v mymean2 mysd2
              
                   +----------------------------------+
                   | Group    v    mymean2      mysd2 |
                   |----------------------------------|
                1. |     1   44   34.93333   16.61955 |
                2. |     1   42   34.93333   16.61955 |
                3. |     1   30   34.93333   16.61955 |
                4. |     1   25   34.93333   16.61955 |
                5. |     1   10   34.93333   16.61955 |
                   |----------------------------------|
                6. |     1   45   34.93333   16.61955 |
                7. |     1   27   34.93333   16.61955 |
                8. |     1   30   34.93333   16.61955 |
                9. |     1   24   34.93333   16.61955 |
               10. |     1   70   34.93333   16.61955 |
                   |----------------------------------|
               11. |     1   60   34.93333   16.61955 |
               12. |     1   46   34.93333   16.61955 |
               13. |     1   35   34.93333   16.61955 |
               14. |     1   26   34.93333   16.61955 |
               15. |     1   10   34.93333   16.61955 |
                   |----------------------------------|
               16. |     2   23   40.73333   26.36412 |
               17. |     2   98   40.73333   26.36412 |
               18. |     2   60   40.73333   26.36412 |
               19. |     2   65   40.73333   26.36412 |
               20. |     2   20   40.73333   26.36412 |
                   |----------------------------------|
               21. |     2   45   40.73333   26.36412 |
               22. |     2   12   40.73333   26.36412 |
               23. |     2   33   40.73333   26.36412 |
               24. |     2   24   40.73333   26.36412 |
               25. |     2   77   40.73333   26.36412 |
                   |----------------------------------|
               26. |     2   66   40.73333   26.36412 |
               27. |     2   23   40.73333   26.36412 |
               28. |     2   27   40.73333   26.36412 |
               29. |     2   10   40.73333   26.36412 |
               30. |     2   28   40.73333   26.36412 |
                   +----------------------------------+
              Best regards,

              Marcos

              Comment

              Working...
              X