使用TukeyHSD进行多重比较时输入错误

问题描述 投票:1回答:1

我试图从statsmodels应用TukeyHSD但收到以下错误消息。

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-68-503f7cac5cbb> in <module>()
      1 from statsmodels.stats.multicomp import pairwise_tukeyhsd
      2 
----> 3 pairwise_tukeyhsd(endog=data['value'], groups=data['sample_id'])

c:\users\hambarsous\appdata\local\programs\python\python36\lib\site-packages\statsmodels\stats\multicomp.py in pairwise_tukeyhsd(endog, groups, alpha)
     36     '''
     37 
---> 38     return MultiComparison(endog, groups).tukeyhsd(alpha=alpha)

c:\users\hambarsous\appdata\local\programs\python\python36\lib\site-packages\statsmodels\sandbox\stats\multicomp.py in __init__(self, data, groups, group_order)
    794         if group_order is None:
    795             self.groupsunique, self.groupintlab = np.unique(groups,
--> 796                                                             return_inverse=True)
    797         else:
    798             #check if group_order has any names not in groups

c:\users\hambarsous\appdata\local\programs\python\python36\lib\site-packages\numpy\lib\arraysetops.py in unique(ar, return_index, return_inverse, return_counts, axis)
    221     ar = np.asanyarray(ar)
    222     if axis is None:
--> 223         return _unique1d(ar, return_index, return_inverse, return_counts)
    224     if not (-ar.ndim <= axis < ar.ndim):
    225         raise ValueError('Invalid axis kwarg specified for unique')

c:\users\hambarsous\appdata\local\programs\python\python36\lib\site-packages\numpy\lib\arraysetops.py in _unique1d(ar, return_index, return_inverse, return_counts)
    278 
    279     if optional_indices:
--> 280         perm = ar.argsort(kind='mergesort' if return_index else 'quicksort')
    281         aux = ar[perm]
    282     else:

TypeError: '<' not supported between instances of 'str' and 'int'

我已经尝试了下面的内容,看看我是否可以解决类型错误,但没有运气。

import pandas as pd

pd.to_numeric(data['value'], errors='coerce')

下面是产生我的错误的代码,此时我唯一的假设就是当我读取数据并融化它时,可能是对我不完全理解的数据类型做了些什么。当我检查data和sample_id的数据类型时,我得到了float64和object。

import pandas as pd

data = pd.read_excel('CHOK1CGA2016WB1.xlsx', sheet_name='Cleaned Data')
data = pd.melt(data, id_vars=['sample_code', 'sample_id', 'day', 'test'], value_vars=['rep 1', 'rep 2', 'rep 3', 'rep 4', 'rep 5', 'rep 6'])
data.rename(columns={'variable': 'rep'}, inplace=True)

from statsmodels.stats.multicomp import pairwise_tukeyhsd

pairwise_tukeyhsd(endog=data['value'], groups=data['sample_id'])
python pandas statsmodels pairwise tukeyhsd
1个回答
0
投票

对我的问题的评论让我走上了进一步检查数据['sample_id']列元素的道路。这似乎是问题的所在,因为它是数字或字母/数字的混合我相信只有数字条目导致错误。我只是在有数字和代码运行的元素中添加了一些字母。

© www.soinside.com 2019 - 2024. All rights reserved.