[+] Pop stats

This commit is contained in:
Hykilpikonna
2021-11-24 23:56:38 -05:00
parent fcabf46f43
commit 0940d1442e
+28 -28
View File
@@ -44,9 +44,8 @@ def load_samples() -> list[Sample]:
# Load sample, convert format # Load sample, convert format
samples = load_user_sample() samples = load_user_sample()
samples = [Sample('500-pop', [u.username for u in samples.most_popular]), samples = [Sample('500-pop', [u.username for u in samples.most_popular]),
# Sample('500-rand', [u.username for u in samples.random]), Sample('500-rand', [u.username for u in samples.random]),
# Sample('eng-news', list(samples.english_news)) Sample('eng-news', list(samples.english_news))]
]
# Calculate frequencies and popularity ratios # Calculate frequencies and popularity ratios
for s in samples: for s in samples:
@@ -164,12 +163,12 @@ def report_ignored(samples: list[Sample]) -> None:
["Posted less than 1%"] + ["Posted less than 1%"] +
[str(len([1 for a in s.frequencies if a.data < 0.01])) for s in samples]] [str(len([1 for a in s.frequencies if a.data < 0.01])) for s in samples]]
r = Reporter(f'freq/didnt-post.md') r = Reporter('freq/didnt-post.md')
r.print(tabulate(table, [s.name for s in samples], tablefmt="github")) r.print(tabulate(table, [s.name for s in samples], tablefmt="github"))
# For popularity ratio, report ignored # For popularity ratio, report ignored
table = [["Ignored"] + [str(len(s.users) - len(s.popularity_ratios)) for s in samples]] table = [["Ignored"] + [str(len(s.users) - len(s.popularity_ratios)) for s in samples]]
r = Reporter(f'pop/ignored.md') r = Reporter('pop/ignored.md')
r.print(tabulate(table, [s.name for s in samples], tablefmt="github")) r.print(tabulate(table, [s.name for s in samples], tablefmt="github"))
@@ -242,34 +241,27 @@ def report_histograms(sample: Sample) -> None:
report_histogram(x, f'pop/{sample.name}-hist.png', title, axvline=[1]) report_histogram(x, f'pop/{sample.name}-hist.png', title, axvline=[1])
def view_covid_tweets_pop(sample: Sample) -> None: def report_pop_stats(samples: list[Sample]) -> None:
""" """
:param sample: Sample Report popularity ratios' statistics
:param samples: Samples
:return: None :return: None
""" """
# Init reporter xs = [[d.data for d in s.popularity_ratios] for s in samples]
r = Reporter(f'{REPORT_DIR}/pop/{sample.name}.md')
# Calculate statistics def tabulate_stats(stats: list[Stats]):
x_list = [f.data for f in sample.popularity_ratios] return [['Mean'] + [f'{s.mean:.2f}' for s in stats],
s = get_statistics(x_list) ['Median'] + [f'{s.median:.2f}' for s in stats],
r.print(f'With outliers, ') ['StdDev'] + [f'{s.stddev:.2f}' for s in stats]]
r.print(f'- mean: {s.mean:.2f}, median: {s.median:.2f}, stddev: {s.stddev:.2f}')
r.print()
# Remove outliers table = tabulate_stats([get_statistics(x) for x in xs])
r.print('As there are many outliers in the popularity ratio, they are removed in graphing.') Reporter('pop/stats-with-outliers.md').print(
r.print() tabulate(table, [s.name for s in samples], tablefmt='github'))
x_list = remove_outliers(x_list)
# Calculate statistics without outliers table = tabulate_stats([get_statistics(remove_outliers(x)) for x in xs])
s = get_statistics(x_list) Reporter('pop/stats.md').print(
r.print(f'Without outliers, ') tabulate(table, [s.name for s in samples], tablefmt='github'))
r.print(f'- mean: {s.mean:.2f}, median: {s.median:.2f}, stddev: {s.stddev:.2f}')
r.print()
# Save report
r.save()
def view_covid_tweets_date(tweets: list[Posting]): def view_covid_tweets_date(tweets: list[Posting]):
@@ -282,7 +274,10 @@ def view_covid_tweets_date(tweets: list[Posting]):
plt.show() plt.show()
if __name__ == '__main__': def report_all() -> None:
"""
Generate all reports
"""
load_font() load_font()
Path(f'{REPORT_DIR}/freq').mkdir(parents=True, exist_ok=True) Path(f'{REPORT_DIR}/freq').mkdir(parents=True, exist_ok=True)
@@ -295,9 +290,14 @@ if __name__ == '__main__':
debug('Creating reports...') debug('Creating reports...')
report_ignored(samples) report_ignored(samples)
report_pop_stats(samples)
for s in samples: for s in samples:
report_top_20_tables(s) report_top_20_tables(s)
report_histograms(s) report_histograms(s)
if __name__ == '__main__':
report_all()
# samples = load_user_sample() # samples = load_user_sample()
# combine_tweets_for_sample([u.username for u in samples.most_popular], '500-pop') # combine_tweets_for_sample([u.username for u in samples.most_popular], '500-pop')
# combine_tweets_for_sample([u.username for u in samples.random], '500-rand') # combine_tweets_for_sample([u.username for u in samples.random], '500-rand')