Announcement

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

  • Loop to output summary statistics

    Hi, I am using data with numerous continuous variables. I would like to summarize all using the tabstat command and output the results into three columns, Variable name, foreign column, and domestic column. In the foreign and domestic column, I would like the estimates to be reported as "median(iqr)", i.e. for example "2.2 (1.5)" in each cell.

    ----------------------- copy starting from the next line -----------------------
    Code:
    * Example generated by -dataex-. For more info, type help dataex
    clear
    input str18 make int(price mpg rep78) float headroom int(trunk weight length turn displacement) float gear_ratio byte foreign
    "AMC Concord"        4099 22 3 2.5 11 2930 186 40 121 3.58 0
    "AMC Pacer"          4749 17 3   3 11 3350 173 40 258 2.53 0
    "AMC Spirit"         3799 22 .   3 12 2640 168 35 121 3.08 0
    "Buick Century"      4816 20 3 4.5 16 3250 196 40 196 2.93 0
    "Buick Electra"      7827 15 4   4 20 4080 222 43 350 2.41 0
    "Buick LeSabre"      5788 18 3   4 21 3670 218 43 231 2.73 0
    "Buick Opel"         4453 26 .   3 10 2230 170 34 304 2.87 0
    "Buick Regal"        5189 20 3   2 16 3280 200 42 196 2.93 0
    "Buick Riviera"     10372 16 3 3.5 17 3880 207 43 231 2.93 0
    "Buick Skylark"      4082 19 3 3.5 13 3400 200 42 231 3.08 0
    "Cad. Deville"      11385 14 3   4 20 4330 221 44 425 2.28 0
    "Cad. Eldorado"     14500 14 2 3.5 16 3900 204 43 350 2.19 0
    "Cad. Seville"      15906 21 3   3 13 4290 204 45 350 2.24 0
    "Chev. Chevette"     3299 29 3 2.5  9 2110 163 34 231 2.93 0
    "Chev. Impala"       5705 16 4   4 20 3690 212 43 250 2.56 0
    "Chev. Malibu"       4504 22 3 3.5 17 3180 193 31 200 2.73 0
    "Chev. Monte Carlo"  5104 22 2   2 16 3220 200 41 200 2.73 0
    "Chev. Monza"        3667 24 2   2  7 2750 179 40 151 2.73 0
    "Chev. Nova"         3955 19 3 3.5 13 3430 197 43 250 2.56 0
    "Dodge Colt"         3984 30 5   2  8 2120 163 35  98 3.54 0
    "Dodge Diplomat"     4010 18 2   4 17 3600 206 46 318 2.47 0
    "Dodge Magnum"       5886 16 2   4 17 3600 206 46 318 2.47 0
    "Dodge St. Regis"    6342 17 2 4.5 21 3740 220 46 225 2.94 0
    "Ford Fiesta"        4389 28 4 1.5  9 1800 147 33  98 3.15 0
    "Ford Mustang"       4187 21 3   2 10 2650 179 43 140 3.08 0
    "Linc. Continental" 11497 12 3 3.5 22 4840 233 51 400 2.47 0
    "Linc. Mark V"      13594 12 3 2.5 18 4720 230 48 400 2.47 0
    "Linc. Versailles"  13466 14 3 3.5 15 3830 201 41 302 2.47 0
    "Merc. Bobcat"       3829 22 4   3  9 2580 169 39 140 2.73 0
    "Merc. Cougar"       5379 14 4 3.5 16 4060 221 48 302 2.75 0
    "Merc. Marquis"      6165 15 3 3.5 23 3720 212 44 302 2.26 0
    "Merc. Monarch"      4516 18 3   3 15 3370 198 41 250 2.43 0
    "Merc. XR-7"         6303 14 4   3 16 4130 217 45 302 2.75 0
    "Merc. Zephyr"       3291 20 3 3.5 17 2830 195 43 140 3.08 0
    "Olds 98"            8814 21 4   4 20 4060 220 43 350 2.41 0
    "Olds Cutl Supr"     5172 19 3   2 16 3310 198 42 231 2.93 0
    "Olds Cutlass"       4733 19 3 4.5 16 3300 198 42 231 2.93 0
    "Olds Delta 88"      4890 18 4   4 20 3690 218 42 231 2.73 0
    "Olds Omega"         4181 19 3 4.5 14 3370 200 43 231 3.08 0
    "Olds Starfire"      4195 24 1   2 10 2730 180 40 151 2.73 0
    "Olds Toronado"     10371 16 3 3.5 17 4030 206 43 350 2.41 0
    "Plym. Arrow"        4647 28 3   2 11 3260 170 37 156 3.05 0
    "Plym. Champ"        4425 34 5 2.5 11 1800 157 37  86 2.97 0
    "Plym. Horizon"      4482 25 3   4 17 2200 165 36 105 3.37 0
    "Plym. Sapporo"      6486 26 . 1.5  8 2520 182 38 119 3.54 0
    "Plym. Volare"       4060 18 2   5 16 3330 201 44 225 3.23 0
    "Pont. Catalina"     5798 18 4   4 20 3700 214 42 231 2.73 0
    "Pont. Firebird"     4934 18 1 1.5  7 3470 198 42 231 3.08 0
    "Pont. Grand Prix"   5222 19 3   2 16 3210 201 45 231 2.93 0
    "Pont. Le Mans"      4723 19 3 3.5 17 3200 199 40 231 2.93 0
    "Pont. Phoenix"      4424 19 . 3.5 13 3420 203 43 231 3.08 0
    "Pont. Sunbird"      4172 24 2   2  7 2690 179 41 151 2.73 0
    "Audi 5000"          9690 17 5   3 15 2830 189 37 131  3.2 1
    "Audi Fox"           6295 23 3 2.5 11 2070 174 36  97  3.7 1
    "BMW 320i"           9735 25 4 2.5 12 2650 177 34 121 3.64 1
    "Datsun 200"         6229 23 4 1.5  6 2370 170 35 119 3.89 1
    "Datsun 210"         4589 35 5   2  8 2020 165 32  85  3.7 1
    "Datsun 510"         5079 24 4 2.5  8 2280 170 34 119 3.54 1
    "Datsun 810"         8129 21 4 2.5  8 2750 184 38 146 3.55 1
    "Fiat Strada"        4296 21 3 2.5 16 2130 161 36 105 3.37 1
    "Honda Accord"       5799 25 5   3 10 2240 172 36 107 3.05 1
    "Honda Civic"        4499 28 4 2.5  5 1760 149 34  91  3.3 1
    "Mazda GLC"          3995 30 4 3.5 11 1980 154 33  86 3.73 1
    "Peugeot 604"       12990 14 . 3.5 14 3420 192 38 163 3.58 1
    "Renault Le Car"     3895 26 3   3 10 1830 142 34  79 3.72 1
    "Subaru"             3798 35 5 2.5 11 2050 164 36  97 3.81 1
    "Toyota Celica"      5899 18 5 2.5 14 2410 174 36 134 3.06 1
    "Toyota Corolla"     3748 31 5   3  9 2200 165 35  97 3.21 1
    "Toyota Corona"      5719 18 5   2 11 2670 175 36 134 3.05 1
    "VW Dasher"          7140 23 4 2.5 12 2160 172 36  97 3.74 1
    "VW Diesel"          5397 41 5   3 15 2040 155 35  90 3.78 1
    "VW Rabbit"          4697 25 4   3 15 1930 155 35  89 3.78 1
    "VW Scirocco"        6850 25 4   2 16 1990 156 36  97 3.78 1
    "Volvo 260"         11995 17 5 2.5 14 3170 193 37 163 2.98 1
    end
    label values foreign origin
    label def origin 0 "Domestic", modify
    label def origin 1 "Foreign", modify
    ------------------ copy up to and including the previous line ------------------


    I used the following loop;

    frame create results str32 Independentvariable float (Median IQR)

    foreach v of varlist displacement gear_ratio length mpg price rep78 weight {
    tabstat `v', by(foreign) stat (median iqr)
    matrix M = r(table)
    frame post results ("`v'") (M["b", "foreign:`v'"]) (M["se", "foreign:`v'"])
    }

    frame change results
    format Median IQR %5.3f
    quietly compress
    list, noobs clean


    But I am getting an error message that says "is not a valid command"

  • #2
    I can't reproduce that as I get this

    Code:
    . sysuse auto, clear 
    (1978 automobile data)
    
    . 
    . frame create results str32 Independentvariable float (Median IQR)
    
    . 
    . foreach v of varlist displacement gear_ratio length mpg price rep78 weight {
      2. tabstat `v', by(foreign) stat (median iqr)
      3. matrix M = r(table)
      4. frame post results ("`v'") (M["b", "foreign:`v'"]) (M["se", "foreign:`v'"])
      5. }
    
    Summary for variables: displacement
    Group variable: foreign (Car origin)
    
     foreign |       p50       IQR
    ---------+--------------------
    Domestic |       231     148.5
     Foreign |       101        40
    ---------+--------------------
       Total |       196       131
    ------------------------------
    "b" not found
    r(111);
    which in itself seems comprehensible. I guess your example is an awkward mix of

    (1) your original code with different data and quite different purpose (else why refer to b and se, which have different meanings?)

    and

    (2) an example intended in helpful spirit that turns out not to echo your problem.

    I think we need a different example.

    Comment


    • #3
      Hi Nick,

      I was able to rectify the problem which is actually a combination of your example in 1 plus a mismatch of one variable in a string format. Thank you.

      Comment

      Working...
      X