【问题标题】:kruskal wallis test for multiple comparison using python使用 python 进行多重比较的 kruskal wallis 测试
【发布时间】:2022-01-21 22:40:32
【问题描述】:

我正计划对组间的多个变量进行 kruskal-wallis 检验(例如,out1、out2 和 out3 在序数水平上的疾病差异)并获得排序后的变量 [e.g. out2, out3, out1] 基于递减 KW 测试结果。但是,收到错误消息:“ValueError: If using all scalar values, you must pass an index”。那么如何解决呢?

from scipy import stats
import pandas as pd
import numpy as np

data = pd.DataFrame({ 'ID': list(range(1,21)), 
                  'Disease': ["Cancer","Healthy","Adenoma","Cancer","Cancer","Healthy","Cancer","Healthy","Cancer","Cancer","Adenoma","Cancer","Healthy","Cancer","Healthy","Healthy","Healthy","Inflammation","Healthy","Inflammation"],
                   'Out1': np.random.randn(20),
                  'Out2': np.random.randn(20),
                  'Out3': np.random.randn(20)})

def KW_test(y, x):
  y = np.array(y)
  label, idx = np.unique(list(x), return_inverse=True)
  groups = [y[idx == i] for i, l in enumerate(label)]
  H, p = stats.kruskal(*groups)
  return H

results=[]
outcomes= list(data.columns)[2:]
for i in outcomes: 
   y=data[i]
   x=data.iloc[:, 1]
   KW_test=KW_test(y,x)
   results=pd.DataFrame({'outcomes': i, 'KW_test': KW_test}, columns=['outcomes', 'KW_test']) 
   results.append(results)
   # sorted the results decreasingly using KW_test results
   results=results.sort_value(["KW_test"], ascending=False)
   # return the sorted outcomes 
   print(results[outcomes]) 

【问题讨论】:

    标签: python function for-loop kruskal-wallis


    【解决方案1】:

    解决办法是用'enumerate'函数添加索引

    for index, i in enumerate(features): 
        y=data[i]
        x=data.iloc[:, 4]
        KW_test_result=KW_test(y,x)
        if index == 0:
        results = pd.DataFrame({'features': [i], 'KW_test': [KW_test_result]}, columns=['features', 'KW_test']) 
        else: 
        new_result=pd.DataFrame({'features': [i], 'KW_test': [KW_test_result]}, columns=['features', 'KW_test']) 
        results = pd.concat([results, new_result])
     
    results=results.sort_values(["KW_test"], ascending=False)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-03
      • 2015-05-03
      • 2018-03-14
      • 2021-06-07
      • 1970-01-01
      • 2015-10-04
      • 2020-07-27
      • 2020-04-17
      相关资源
      最近更新 更多