Statistical difference between groups on number of 'negative' answers I have survey responses on whether several (~50) different factors (such as the work-culture) have a positive, neutral, of negative influence on how people perceive their job. I would like to test if there is a significant difference between different groups (e.g. men-women, people who have a children-people who don't have children, etc.) on how 'negative' they are on each factor. In other words: have, for instance, women answered significantly more negative than men when presented with the factor of work-culture? What statistical test should I use for this analysis?
And do I perform the correct statistical test on the % of negative answers or on the number of answers (together with the N of each group)?
Thanks!

If you have access to a computer, try the bootstrap.

*

*From the real responses of the group of e.g. men, draw a simulated set of responses with replacement. Call this "a bootstrap replication" of men's responses. Do the same for women.


*Repeat the previous step very many times. For each of these pairs of bootstrap replications, subtract the proportion of responses of interest from the men's replication from the proportion of responses from the women's replication.


*In the step above, you will get a long list of differences. Sort this list from smallest to largest. If the middle, say, 90 % of values exclude 0, you might have an effect worth investigating!
The neat thing about the bootstrap is that you don't have to know a whole lot of theory to do it.
Practically, something like this:
import math
import random

# P = positive, I = indifferent, N = negative
workculture_men = 'PPPPINNPPPNPIIIINPPPNIIIPNPI'
workculture_women = 'NPPPIIIPPPPINNNNNPPNPPPNNPPPNNNPPPIINPNPIIPN'

def bootstrap_proportion_negative(responses):
    replication = random.choices(responses, k=len(responses))
    prop_neg = sum(r == 'N' for r in replication)/len(replication)
    return prop_neg


def bootstrap_difference(men, women):
    for i in range(1, 500):
        yield bootstrap_proportion_negative(men) - bootstrap_proportion_negative(women)


distribution = list(sorted(bootstrap_difference(workculture_men, workculture_women)))

lower5percent = distribution[math.floor(0.05*len(distribution))]
upper5percent =distribution[math.ceil(0.95*len(distribution))]
print(f'Middle 90 %: [{lower5percent:.2f}, {upper5percent:.2f}]')


