Announcement

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

  • Help with graphs

    I hope someone can help me with my codes as I am trying to show Gender with different household income (both on x-axis) experiencing various levels of Stress-Scale (y-axis). I tried to do it once and it worked but when I did it again, it failed. Something went wrong with my codes. Please see my excel data with the three variables and graph. In addition, I also want to label 0 as "Male" and 1 as "Female" on the x-axis and on the y-axis, start the Scale on 1 rather than 2.5 and end on 7 rather than 4.5.

    Please help me. I am so confused and feel hopeless as I have been going around in circles. thank you so much.
    Code:
    * Example generated by -dataex-. For more info, type help dataex
    clear
    input str6 Gender str17 HHIncome byte Stress_Scale
    "Female" "income<$50K-$100k" 1
    "Female" "income<$25K-$50k"  4
    "Male"   "income<$25k"       7
    "Male"   "income>$100k"      3
    "Female" "income<$50K-$100k" 4
    "Male"   "income>$100k"      7
    "Female" "income<$25K-$50k"  2
    "Female" "income>$100k"      4
    "Female" "income>$100k"      4
    "Female" "income<$50K-$100k" 5
    "Female" "income<$50K-$100k" 6
    "Female" "income<$25K-$50k"  1
    "Male"   "income>$100k"      3
    "Female" "income<$25K-$50k"  1
    "Female" "income<$50K-$100k" 2
    "Female" "income<$25k"       4
    "Male"   "income>$100k"      7
    "Female" "income<$50K-$100k" 3
    "Male"   "income<$25k"       2
    "Male"   "income<$25k"       3
    "Female" "income<$50K-$100k" 7
    "Female" "income<$50K-$100k" 1
    "Male"   "income<$25K-$50k"  2
    "Female" "income<$50K-$100k" 2
    "Female" "income<$50K-$100k" 2
    "Female" "income>$100k"      6
    "Male"   "income<$25K-$50k"  3
    "Female" "income<$50K-$100k" 3
    "Male"   "income>$100k"      7
    "Male"   "income>$100k"      3
    "Male"   "income<$50K-$100k" 1
    "Female" "income<$50K-$100k" 2
    "Male"   "income<$25K-$50k"  2
    "Female" "income<$50K-$100k" 5
    "Female" "income<$25K-$50k"  1
    "Female" "income<$50K-$100k" 2
    "Male"   "income<$50K-$100k" 5
    "Female" "income>$100k"      3
    "Male"   "income<$25K-$50k"  2
    "Female" "income<$50K-$100k" 2
    "Male"   "income<$25K-$50k"  1
    "Female" "income<$50K-$100k" 1
    "Female" "income<$50K-$100k" 3
    "Male"   "income<$50K-$100k" 2
    "Male"   "income<$25K-$50k"  2
    "Female" "income<$50K-$100k" 6
    "Female" "income<$25K-$50k"  1
    "Female" "income<$25K-$50k"  6
    "Female" "income<$25k"       4
    "Male"   "income<$25K-$50k"  2
    "Male"   "income<$50K-$100k" 2
    "Female" "income>$100k"      4
    "Female" "income<$50K-$100k" 6
    "Female" "income<$50K-$100k" 5
    "Female" "income<$50K-$100k" 2
    "Female" "income<$50K-$100k" 7
    "Female" "income<$25k"       1
    "Female" "income<$25K-$50k"  6
    "Female" "income>$100k"      1
    "Female" "income<$25K-$50k"  4
    "Female" "income<$50K-$100k" 1
    "Male"   "income<$25K-$50k"  2
    "Female" "income>$100k"      4
    "Female" "income>$100k"      2
    "Male"   "income<$25K-$50k"  1
    "Male"   "income<$50K-$100k" 4
    "Female" "income<$50K-$100k" 3
    "Male"   "income>$100k"      2
    "Female" "income<$25K-$50k"  3
    "Female" "income<$25K-$50k"  1
    "Male"   "income>$100k"      2
    "Male"   "income<$25K-$50k"  4
    "Male"   "income<$50K-$100k" 2
    "Female" "income<$50K-$100k" 1
    "Male"   "income<$25K-$50k"  3
    "Female" "income<$25k"       1
    "Male"   "income<$50K-$100k" 7
    "Female" "income>$100k"      4
    "Male"   "income>$100k"      2
    "Female" "income<$25K-$50k"  2
    "Male"   "income<$25K-$50k"  2
    "Female" "income<$25K-$50k"  6
    "Male"   "income<$50K-$100k" 3
    "Male"   "income<$50K-$100k" 1
    "Male"   "income<$50K-$100k" 2
    "Male"   "income<$25K-$50k"  4
    "Male"   "income<$50K-$100k" 4
    "Female" "income<$50K-$100k" 6
    "Male"   "income>$100k"      5
    "Male"   "income>$100k"      7
    "Female" "income<$25K-$50k"  1
    "Male"   "income<$25K-$50k"  5
    "Female" "income<$25K-$50k"  4
    "Female" "income>$100k"      4
    "Female" "income<$50K-$100k" 6
    "Female" "income<$50K-$100k" 5
    "Female" "income<$25k"       1
    "Male"   "income<$50K-$100k" 6
    "Female" "income<$50K-$100k" 3
    "Female" "income<$50K-$100k" 3
    end



    HTML Code:
    collapse (mean) Stress_Scale , by(Gender)
    format Stress_Scale %9.1f
    separate Stress_Scale, by(HHIncome) veryshortlabel
    twoway connected Stress_Scale0 Stress_Scale1 Stress_Scale2 Stress_Scale3 Gender, mlab(Stress_Scale Stress_Scale Stress_Scale Stress_Scale) mlabpos(12 12) xlab(0/1) plotregion(margin(large))
    Click image for larger version

Name:	genderdiff.png
Views:	1
Size:	108.7 KB
ID:	1642666

  • #2
    Hi Lena,
    Can you explain what the problem is exactly?
    If it is just that you want to recode the x-axis and constrain the range of the y-axis, then the following should work
    For the former
    Code:
    xlabel(0 "Male" 1"Female")
    For the latter
    Code:
    ylabel(1(1)7)
    Simply add the above lines to your graph code.
    All the best,
    Matt
    Last edited by Matthew Alexander; 28 Dec 2021, 16:26.

    Comment


    • #3
      you need to make some modifications to your code,
      Code:
      gen female = Gender == "Female"
      collapse Stress_Scale, by(female HHIncome)
      separate Stress_Scale, by(HHIncome) veryshortlabel
      
      tw connected Stress_Scale1-Stress_Scale4 female ///
      ,xlab(0 "Male" 1 "Female") xti("") yla(1(1)7) ysc(r(1 7))

      Comment


      • #4
        I modified the first line of the code ie gen female = Gender == "Female" but received an error msg "mismatch r (109). Did I type it correctly? Thank you.

        Comment


        • #5
          No. No idea what context this is in but what you might mean is

          Code:
          g female = Gender if Gender == "Female"
          Whether this makes sense or not is your call.

          Comment


          • #6
            does the error occur if you run the code in #3 on the data you provided in #1?
            is Gender string or numeric in your dataset?

            Comment


            • #7
              Gender is Male or Female, string. And yes, the error occurs on the third line
              separate Stress_Scale, by(HHIncome) veryshortlabel

              Comment


              • #8
                The suggestions in #3 look good to me. I guess you're changing something else.

                This works for me. I added a kind of histogram using tabplot from the Stata Journal. Some researchers might feel queasy taking means of an ordinal scale variable.

                Notice also the clean-up of what I guess are your income categories. You need to be consistent in use of k or K and inequality signs.


                Code:
                * Example generated by -dataex-. For more info, type help dataex
                clear
                input str6 Gender str17 HHIncome byte Stress_Scale
                "Female" "income<$50K-$100k" 1
                "Female" "income<$25K-$50k"  4
                "Male"   "income<$25k"       7
                "Male"   "income>$100k"      3
                "Female" "income<$50K-$100k" 4
                "Male"   "income>$100k"      7
                "Female" "income<$25K-$50k"  2
                "Female" "income>$100k"      4
                "Female" "income>$100k"      4
                "Female" "income<$50K-$100k" 5
                "Female" "income<$50K-$100k" 6
                "Female" "income<$25K-$50k"  1
                "Male"   "income>$100k"      3
                "Female" "income<$25K-$50k"  1
                "Female" "income<$50K-$100k" 2
                "Female" "income<$25k"       4
                "Male"   "income>$100k"      7
                "Female" "income<$50K-$100k" 3
                "Male"   "income<$25k"       2
                "Male"   "income<$25k"       3
                "Female" "income<$50K-$100k" 7
                "Female" "income<$50K-$100k" 1
                "Male"   "income<$25K-$50k"  2
                "Female" "income<$50K-$100k" 2
                "Female" "income<$50K-$100k" 2
                "Female" "income>$100k"      6
                "Male"   "income<$25K-$50k"  3
                "Female" "income<$50K-$100k" 3
                "Male"   "income>$100k"      7
                "Male"   "income>$100k"      3
                "Male"   "income<$50K-$100k" 1
                "Female" "income<$50K-$100k" 2
                "Male"   "income<$25K-$50k"  2
                "Female" "income<$50K-$100k" 5
                "Female" "income<$25K-$50k"  1
                "Female" "income<$50K-$100k" 2
                "Male"   "income<$50K-$100k" 5
                "Female" "income>$100k"      3
                "Male"   "income<$25K-$50k"  2
                "Female" "income<$50K-$100k" 2
                "Male"   "income<$25K-$50k"  1
                "Female" "income<$50K-$100k" 1
                "Female" "income<$50K-$100k" 3
                "Male"   "income<$50K-$100k" 2
                "Male"   "income<$25K-$50k"  2
                "Female" "income<$50K-$100k" 6
                "Female" "income<$25K-$50k"  1
                "Female" "income<$25K-$50k"  6
                "Female" "income<$25k"       4
                "Male"   "income<$25K-$50k"  2
                "Male"   "income<$50K-$100k" 2
                "Female" "income>$100k"      4
                "Female" "income<$50K-$100k" 6
                "Female" "income<$50K-$100k" 5
                "Female" "income<$50K-$100k" 2
                "Female" "income<$50K-$100k" 7
                "Female" "income<$25k"       1
                "Female" "income<$25K-$50k"  6
                "Female" "income>$100k"      1
                "Female" "income<$25K-$50k"  4
                "Female" "income<$50K-$100k" 1
                "Male"   "income<$25K-$50k"  2
                "Female" "income>$100k"      4
                "Female" "income>$100k"      2
                "Male"   "income<$25K-$50k"  1
                "Male"   "income<$50K-$100k" 4
                "Female" "income<$50K-$100k" 3
                "Male"   "income>$100k"      2
                "Female" "income<$25K-$50k"  3
                "Female" "income<$25K-$50k"  1
                "Male"   "income>$100k"      2
                "Male"   "income<$25K-$50k"  4
                "Male"   "income<$50K-$100k" 2
                "Female" "income<$50K-$100k" 1
                "Male"   "income<$25K-$50k"  3
                "Female" "income<$25k"       1
                "Male"   "income<$50K-$100k" 7
                "Female" "income>$100k"      4
                "Male"   "income>$100k"      2
                "Female" "income<$25K-$50k"  2
                "Male"   "income<$25K-$50k"  2
                "Female" "income<$25K-$50k"  6
                "Male"   "income<$50K-$100k" 3
                "Male"   "income<$50K-$100k" 1
                "Male"   "income<$50K-$100k" 2
                "Male"   "income<$25K-$50k"  4
                "Male"   "income<$50K-$100k" 4
                "Female" "income<$50K-$100k" 6
                "Male"   "income>$100k"      5
                "Male"   "income>$100k"      7
                "Female" "income<$25K-$50k"  1
                "Male"   "income<$25K-$50k"  5
                "Female" "income<$25K-$50k"  4
                "Female" "income>$100k"      4
                "Female" "income<$50K-$100k" 6
                "Female" "income<$50K-$100k" 5
                "Female" "income<$25k"       1
                "Male"   "income<$50K-$100k" 6
                "Female" "income<$50K-$100k" 3
                "Female" "income<$50K-$100k" 3
                end
                
                gen income_str = subinstr(HHIncome, "income", "", .)
                replace income_str = subinstr(income_str, "K", "k", .)
                replace income_str = subinstr(income_str, "<", "", .) if strpos(income_str, "50")
                label def income_str 1 "<$25k" 2 "$25k-$50k" 3 "$50k-$100k" 4 ">$100k" 
                encode income_str, gen(income_num) label(income_str)
                
                gen female = Gender == "Female"
                label def female 0 Male 1 Female 
                label val female female 
                
                tabplot Stress female, by(income_num, note("") row(1) compact) showval yreverse ytitle(Stress scale) name(histogram, replace)
                
                collapse Stress_Scale, by(female income_num)
                separate Stress_Scale, by(income_num) veryshortlabel
                
                tw connected Stress_Scale? female , ytitle(Mean stress) xlab(0 "Male" 1 "Female") xti("") yla(1(1)7, ang(h)) ysc(r(1 7)) ///
                ms(T O D S) legend(order(4 3 2 1) col(1) pos(11) ring(0)) xsc(r(-0.1 1.1)) name(means, replace)
                Click image for larger version

Name:	histogram.png
Views:	1
Size:	21.6 KB
ID:	1643528


                Click image for larger version

Name:	means.png
Views:	1
Size:	26.2 KB
ID:	1643527



                Comment


                • #9
                  Dr Cox
                  Thank you so much for your help. Yes, the graphs you illustrated was what I have been struggling towards since Christmas so thank you for this lovely New Year's gift. I am deeply grateful. Thank you for sharing the codes as well. Yours truly, Lena

                  Comment

                  Working...
                  X