Spyder-TypeError中的双向重复测量ANOVA:列表索引必须是整数或切片,而不是numpy.float64

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

我刚开始学习编码并想学习python。我正在尝试重新创建我已经在Spyder上进行的SPSS统计分析。我通过复制一个例子来做到这一点:http://www.statsmodels.org/0.6.1/examples/notebooks/generated/interactions_anova.html我的分析略小但非常相似。我正在逐步跟踪示例,我遇到了“看看数据:”步骤的问题。

我的工作是2x2重复测量方差分析。 IV是MATCH(是否使用了参与者的首选照明条件)和两个条件。 DV是学习目标上的测试前/测试后分数。

我收到错误:

  File "C:\Users\Tim\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 101, in execfile
    exec(compile(f.read(), filename, 'exec'), namespace)

  File "C:/Users/Tim/.spyder-py3/thesis.py", line 31, in <module>
    plt.scatter(group['MATCH'], marker=symbols[j], color=colors[i-k],

TypeError: list indices must be integers or slices, not numpy.float64

<matplotlib.figure.Figure at 0x278c15ea6d8> 

我的代码:

from __future__ import print_function
from statsmodels.compat import urlopen
import numpy as np
np.set_printoptions(precision=4, suppress=True)
import statsmodels.api as sm
import pandas as pd
pd.set_option("display.width", 100)
import matplotlib.pyplot as plt
from statsmodels.formula.api import ols
from statsmodels.graphics.api import interaction_plot, abline_plot
from statsmodels.stats.anova import anova_lm


data = r'C:\Users\Tim\pandas\Thesis_main.csv'
data = pd.read_csv(data)


plt.figure(figsize=(6,6))
symbols = ['D', '^']
colors = ['r', 'g', 'blue']
factor_groups = data.groupby(['MATCH'])
for values, group in factor_groups:
    i,j = values
    plt.scatter(group['PRETEST'], group['POSTTEST'] marker=symbols[j], color=colors[i-1], s=144)
plt.xlabel('MATCH');
plt.ylabel('PRETEST');('POSTTEST');

数据:

https://github.com/tici0988/Sorting_contacts/blob/master/Thesis_main.csv

任何有关解决此错误的建议,或指向我更有效的方向将非常感谢!谢谢 :)

python statistics spyder anova
1个回答
0
投票

您的代码存在一些问题。首先是你试图用plt.scatter参数调用x。你想用什么来策划group['MATCH']

接下来,您试图通过浮点索引列表symbols和/或列表colors,这是不可能的。我相信你使用的浮点数是PRETESTPOSTTEST得分(在你的代码中用ik表示)。我看不到数据,但我们假设得分是1.25等数字;你不能在2个符号的列表中选择索引1.25,因为这对python没有任何意义。您是否尝试使用不同的符号和颜色来表示不同的东西?如果是这样,代表什么?如果没有,只需取出marker=symbols[j]color=colors[i-k]论点。

仅供参考,在您的代码中,j未定义;当你输入i时,你必须指ksymbols[j]

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