import pandas as pd from scipy import stats from scipy.stats import ttest_ind import statsmodels.stats.api as sms #Hoiatusteade, et pandas.core.datetools asemel tuleks edaspidi kasutada moodulit pandas.tseries from statsmodels.stats.multicomp import pairwise_tukeyhsd from sklearn.decomposition import PCA import matplotlib matplotlib.use("Agg") import matplotlib.pyplot as plt tekstid = pd.read_csv("http://www.tlu.ee/~kais/Kvant_digihum/keeletasemed447.csv") A2_sonad = tekstid[tekstid.keeletase==1].sonad.astype(float) B1_sonad = tekstid[tekstid.keeletase==2].sonad.astype(float) B2_sonad = tekstid[tekstid.keeletase==3].sonad.astype(float) C1_sonad = tekstid[tekstid.keeletase==4].sonad.astype(float) print("Eksamikirjutiste keskmine pikkus:") print("A2-tasemel -", A2_sonad.mean(), "sõna") print("B1-tasemel -", B1_sonad.mean(), "sõna") print("B2-tasemel -", B2_sonad.mean(), "sõna") print("C1-tasemel -", C1_sonad.mean(), "sõna") # T-test print("\nA2- ja B1-taseme kirjutiste keskmise sõnade arvu võrdlus t-testi abil:") print(ttest_ind(A2_sonad, B1_sonad)) cm = sms.CompareMeans(sms.DescrStatsW(A2_sonad), sms.DescrStatsW(B1_sonad)) print("\nErinevuse usaldusvahemik:") print(cm.tconfint_diff(usevar='unequal')) # ANOVA print("\nKõigi tasemete kirjutiste sõnade arvu võrdlus ANOVA abil:") print(stats.f_oneway(A2_sonad, B1_sonad, B2_sonad, C1_sonad)) print("\nJäreltest:") print(pairwise_tukeyhsd(tekstid.sonad, tekstid.keeletase)) # Hii-ruut test # Leian käändsõna mitmusevormide absoluutsageduse tekstid["yld_mitm_abs"] = tekstid.yld_mitm * tekstid.sonad # Arvutan keeleoskustasemeti mitmuses käändsõnade ja kõigi sõnade summa A2_mitmkokku = tekstid[tekstid.keeletase==1].yld_mitm_abs.sum() A2_sonadkokku = tekstid[tekstid.keeletase==1].sonad.sum() B1_mitmkokku = tekstid[tekstid.keeletase==2].yld_mitm_abs.sum() B1_sonadkokku = tekstid[tekstid.keeletase==2].sonad.sum() B2_mitmkokku = tekstid[tekstid.keeletase==3].yld_mitm_abs.sum() B2_sonadkokku = tekstid[tekstid.keeletase==3].sonad.sum() C1_mitmkokku = tekstid[tekstid.keeletase==4].yld_mitm_abs.sum() C1_sonadkokku = tekstid[tekstid.keeletase==4].sonad.sum() print("\nA2- ja B1-taseme mitmuses käändsõnade osakaalu võrdlus hii-ruut testi abil:") print(stats.chi2_contingency([[A2_mitmkokku, A2_sonadkokku], [B1_mitmkokku, B1_sonadkokku]])[1]) print("\nB2- ja C1-taseme mitmuses käändsõnade osakaalu võrdlus hii-ruut testi abil:") print(stats.chi2_contingency([[B2_mitmkokku, B2_sonadkokku], [C1_mitmkokku, C1_sonadkokku]])[1]) # Korrelatsioon print("\nKorrelatsioonimaatriks:") print(tekstid.corr()) # Peakomponentide analüüs kaandearvud = tekstid[["yld_Nom", "yld_Gen"]] tulemus = PCA().fit_transform(kaandearvud) print("Peakomponentide analüüs: tekstide koordinaadid teljestikul lähtuvalt nimetavas ja omastavas käändes sõnade osakaalust") print(tulemus[0:20]) x = [rida[0] for rida in tulemus] y = [rida[1] for rida in tulemus] varvid = [] nimetused = [] for nr in range(len(x)): if tekstid.keeletase.values[nr]==1: varvid.append("blue") elif tekstid.keeletase.values[nr]==2: varvid.append("red") elif tekstid.keeletase.values[nr]==3: varvid.append("green") else: varvid.append("orange") plt.scatter(x, y, c=varvid, label=varvid) plt.xlabel("nimetav kääne") plt.ylabel("omastav kääne") plt.savefig("pca_kaanded.png") print("Vaata joonist failist pca_kaanded.png.")