2021-01-27

import numpy as np
import pandas as pd

import matplotlib.pyplot as plt
from scipy import stats

from scipy.stats import kstest,normaltest,levene
from scipy.stats import ttest_1samp,ttest_ind,ttest_rel,mannwhitneyu,kruskal
from statsmodels.stats.multicomp import pairwise_tukeyhsd,MultiComparison

from statsmodels.formula.api import ols
from statsmodels.stats.anova import anova_lm
def one_way_anova(data,alpha,ndigits):
#Define empty dataframe to save normal test and T test results
    Result1 = pd.DataFrame(columns=['t-normal','p_normal'])
    Result2 = pd.DataFrame(columns=['t-ftest','p_ftest'])
    for i in data.columns:
        #Normal_test
        NormaltestResult = normaltest(data[i].dropna(), axis=None)
        Result1.loc[i] = NormaltestResult
        Result1 = round(Result1,ndigits)
        
        #F_test
        Ftest_result = levene(data['A1'].dropna(),data['A2'].dropna(),data['A3'].dropna())
        Result2.loc[i] = Ftest_result
        Result2 = round(Result2,ndigits)
        
    #ANOVA
    data_new = data.stack().reset_index().rename(columns={0:'value'}).iloc[:,1:]
    data_new.columns = ['type','value']
    formula = '{} ~ {}'.format(data_new.columns[1], data_new.columns[0])
    model = ols(formula, data_new).fit()
    anova_result = anova_lm(model)
    Result3 = round(anova_result,ndigits)
    
    mc = MultiComparison(data_new['value'], data_new['type'])
    result = mc.tukeyhsd()
 
    print(result)
        
    return Result3
    
one_way_anova(df0,0.05,4)

#Oneway ANOVA package implement
from scipy.stats import f_oneway

f_oneway(df0['A1'].dropna(), df0['A2'].dropna(),df0['A3'].dropna())

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值