wip
This commit is contained in:
@@ -7,6 +7,9 @@ from scipy.stats import ks_2samp
|
||||
from collections import defaultdict
|
||||
from datetime import datetime
|
||||
import matplotlib.pyplot as plt
|
||||
import numpy as np
|
||||
|
||||
colors = {'neg': 'red', 'neu': 'green', 'pos': 'blue', 'com': 'orange'}
|
||||
|
||||
|
||||
def main(folder):
|
||||
@@ -70,19 +73,40 @@ def plotbypost(onlyfiles):
|
||||
f2 = l[i + 1]
|
||||
f.write(f1 + " -> " + f2 + ": ks neg = " + str(changes_neg[p][i]) + "; ks neu = " + str(changes_neu[p][i])
|
||||
+ "; ks pos = " + str(changes_pos[p][i]) + "; ks com = " + str(changes_com[p][i]) + "\n")
|
||||
# pval
|
||||
for (p, l) in files.items():
|
||||
x = [l[i].split("_")[2] + " -\n" + l[i + 1].split("_")[2] for i in range(len(l) - 1)]
|
||||
fig = plt.figure(figsize=(16, 12))
|
||||
for type, changes in {"neg": changes_neg[p], "neu": changes_neu[p], "pos": changes_pos[p], "com": changes_com[p]}.items():
|
||||
pval = [x.pvalue for x in changes]
|
||||
plt.plot(x, pval, label=type + ".pval", color=colors[type])
|
||||
mean = np.mean(pval)
|
||||
std = np.std(pval)
|
||||
dev = [(xx, s) for (xx, s) in zip(x, pval) if s <= mean - std or s >= mean + std]
|
||||
plt.plot(x, [mean] * len(pval), color=colors[type], ls='dashed')
|
||||
plt.plot([xx for (xx, s) in dev], [s for (xx, s) in dev], color=colors[type], ls='None', marker='o')
|
||||
plt.title("KS 2-sided test with max " + str(p) + " posts")
|
||||
plt.xticks(rotation=90)
|
||||
plt.legend(loc="upper right")
|
||||
plt.savefig(folder + "/ks_pval_" + str(p) + ".png", bbox_inches='tight')
|
||||
plt.close(fig)
|
||||
|
||||
# stat
|
||||
for (p, l) in files.items():
|
||||
x = [l[i].split("_")[2] + " -\n" + l[i + 1].split("_")[2] for i in range(len(l) - 1)]
|
||||
fig = plt.figure(figsize=(16, 12))
|
||||
for type, changes in {"neg": changes_neg[p], "neu": changes_neu[p], "pos": changes_pos[p], "com": changes_com[p]}.items():
|
||||
stat = [x.statistic for x in changes]
|
||||
pval = [x.pvalue for x in changes]
|
||||
plt.plot(x, stat, label=type + ".stat")
|
||||
plt.plot(x, pval, label=type + ".pval")
|
||||
plt.plot(x, stat, label=type + ".stat", color=colors[type])
|
||||
mean = np.mean(stat)
|
||||
std = np.std(stat)
|
||||
dev = [(xx, s) for (xx, s) in zip(x, stat) if s <= mean - std or s >= mean + std]
|
||||
plt.plot(x, [mean] * len(stat), color=colors[type], ls='dashed')
|
||||
plt.plot([xx for (xx, s) in dev], [s for (xx, s) in dev], color=colors[type], ls='None', marker='o')
|
||||
plt.title("KS 2-sided test with max " + str(p) + " posts")
|
||||
plt.xticks(rotation=90)
|
||||
plt.legend(loc="upper right")
|
||||
plt.savefig(folder + "/ks_" + str(p) + ".png", bbox_inches='tight')
|
||||
plt.savefig(folder + "/ks_stat_" + str(p) + ".png", bbox_inches='tight')
|
||||
plt.close(fig)
|
||||
|
||||
|
||||
@@ -134,18 +158,40 @@ def plotbydate(onlyfiles):
|
||||
f.write(f1 + " -> " + f2 + ": ks neg = " + str(changes_neg[d][i]) + "; ks neu = " + str(changes_neu[d][i])
|
||||
+ "; ks pos = " + str(changes_pos[d][i]) + "; ks com = " + str(changes_com[d][i]) + "\n")
|
||||
|
||||
# pval
|
||||
for (d, l) in files.items():
|
||||
x = [l[i].split("_")[4][:-3] + "-" + l[i + 1].split("_")[4][:-3] for i in range(len(l) - 1)]
|
||||
fig = plt.figure(figsize=(16, 12))
|
||||
for type, changes in {"neg": changes_neg[d], "neu": changes_neu[d], "pos": changes_pos[d], "com": changes_com[d]}.items():
|
||||
pval = [x.pvalue for x in changes]
|
||||
plt.plot(x, pval, label=type + ".pval", color=colors[type])
|
||||
mean = np.mean(pval)
|
||||
std = np.std(pval)
|
||||
dev = [(xx, s) for (xx, s) in zip(x, pval) if s <= mean - std or s >= mean + std]
|
||||
plt.plot(x, [mean] * len(pval), color=colors[type], ls='dashed')
|
||||
plt.plot([xx for (xx, s) in dev], [s for (xx, s) in dev], color=colors[type], ls='None', marker='o')
|
||||
plt.title("KS 2-sided test with between " + d[0] + " and " + d[1])
|
||||
plt.xticks(rotation=90)
|
||||
plt.legend(loc="upper right")
|
||||
plt.savefig(folder + "/ks_pval_" + d[0] + "_" + d[1] + ".png", bbox_inches='tight')
|
||||
plt.close(fig)
|
||||
|
||||
# stat
|
||||
for (d, l) in files.items():
|
||||
x = [l[i].split("_")[4][:-3] + "-" + l[i + 1].split("_")[4][:-3] for i in range(len(l) - 1)]
|
||||
fig = plt.figure(figsize=(16, 12))
|
||||
for type, changes in {"neg": changes_neg[d], "neu": changes_neu[d], "pos": changes_pos[d], "com": changes_com[d]}.items():
|
||||
stat = [x.statistic for x in changes]
|
||||
pval = [x.pvalue for x in changes]
|
||||
plt.plot(x, stat, label=type + ".stat")
|
||||
plt.plot(x, pval, label=type + ".pval")
|
||||
plt.plot(x, stat, label=type + ".stat", color=colors[type])
|
||||
mean = np.mean(stat)
|
||||
std = np.std(stat)
|
||||
dev = [(xx, s) for (xx, s) in zip(x, stat) if s <= mean - std or s >= mean + std]
|
||||
plt.plot(x, [mean] * len(stat), color=colors[type], ls='dashed')
|
||||
plt.plot([xx for (xx, s) in dev], [s for (xx, s) in dev], color=colors[type], ls='None', marker='o')
|
||||
plt.title("KS 2-sided test with between " + d[0] + " and " + d[1])
|
||||
plt.xticks(rotation=90)
|
||||
plt.legend(loc="upper right")
|
||||
plt.savefig(folder + "/ks_" + d[0] + "_" + d[1] + ".png", bbox_inches='tight')
|
||||
plt.savefig(folder + "/ks_stat_" + d[0] + "_" + d[1] + ".png", bbox_inches='tight')
|
||||
plt.close(fig)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user