Python进行批量t检验

# -*- coding: utf-8 -*-
"""
Created on Mon Mar 30 14:57:51 2020

@author: weisssun
"""
import pandas as pd
from scipy import stats
#导入进行T检验的stats模块
import csv

df = pd.read_excel(r'D:\Python\datafile\游戏.xlsx')
#读取原始数据文件
#行是个案,列是自变量和因变量
#自变量有2个水平

indep_names = ['自变量1',
                '自变量2', 
                '自变量3',
                ]
#自变量所在列,列名的列表
depend_names = ['因变量1', 
                '因变量2', 
                '因变量2', 
                ]
#因变量所在列,列名的列表

results = []
#将t检验结果保存在列表results中,最后写入csv

for depend_name in depend_names:
#因变量列表中的因变量
    for indep_name in indep_names:
    #自变量列表中的自变量
        sig = ''
        #sig存储显著性判断结果
        group1 = df[df[indep_name] == 1][depend_name]
        #组1,当自变量 = 1时对应的的因变量组
        n_group1 = len(group1)
        #组1的样本量
        mean_group1 = group1.mean()
        #组1的平均值
        std_group1 = group1.std()
        #组1的标准差
        group2 = df[df[indep_name] == 0][depend_name]
        #组2,当自变量 = 0时对应的的因变量组
        n_group2 = len(group2)
        #组2的样本量
        mean_group2 = group2.mean()
        #组2的平均值
        std_group2 = group2.std()
        #组2的标准差
        eval_stat, eval_p = stats.levene(group1, group2)
        #对组1, 组2进行方差齐性检验
        if eval_p > 0.05:
            stat_var, p_var = stats.ttest_ind(group1, group2)
            #如果方差齐性,使用默认的独立样本t检验参数
        else:
            stat_var, p_var = stats.ttest_ind(group1, group2, equal_var = False)
            #如果方差不齐性, 设置equal_var = False
        if p_var <= 0.05:
            sig = '显著'
            #如果t检验结果 p值 <= 0.05,sig赋值为 '显著'
        t_df = n_group1 + n_group2 -2
        #df值 = 组1样本量 + 组2样本量 -2
        result = [depend_name, indep_name, n_group1, mean_group1, std_group1, n_group2, mean_group2, std_group2, t_df, stat_var, p_var, sig]
        #将结果存储在列表result中
        results.append(result)
        #将结果增加到results中

with open(r'D:\Python\datafile\t检验游戏.csv', 'w', newline='',encoding='gbk') as f:
    writer = csv.writer(f)            
    for result in results:
        writer.writerow(result)
        #将结果存为csv文件
        

 

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值