提问人:rpn 提问时间:10/24/2023 最后编辑:rpn 更新时间:11/4/2023 访问量:29
如何在连续获得 ValueError 时运行双向方差分析:约束矩阵中必须至少有一行
How to run two-way ANOVA when continuously getting ValueError: must have at least one row in constraint matrix
问:
当我尝试运行方差分析时,我收到“ValueError:约束矩阵中必须至少有一行”消息。请参阅下面的示例表和我尝试运行的代码。您现在可以忽略“重新计数”列!
佩伯爵 | 叙述 | 统治 | 阶段 |
---|---|---|---|
5 | 2 | 1 | 2 |
8 | 4 | 2 | 3 |
5 | 3 | 2 | 4 |
5 | 1 | 1 | 2 |
3 | 0 | 2 | 1 |
0 | 1 | 1 | 2 |
我目前拥有的代码是:
import pandas as pd
import statsmodels.api as sm
from statsmodels.formula.api import ols
data = pd.read_csv('errShift.csv')
# Check the first few rows of your data to verify the column name change
print(data.head())
# Create a model for the two-factor ANOVA
model = ols('pecount ~ C(rule) * C(stage)', data=data).fit()
# Perform the two-factor ANOVA
anova_table = sm.stats.anova_lm(model, typ=2)
# Print the ANOVA table
print(anova_table)
我希望它能产生方差分析结果,其中 pecount 作为因变量,阶段和规则作为自变量。
答:
0赞
rpn
10/31/2023
#1
更新 - 我使用以下代码让它工作(我注意到的唯一区别是在第 10 行中说与说又名我命名的,这可能是产生错误的原因吗?data=data
data=df
dataframe
# Importing libraries
import pandas as pd
import statsmodels.api as sm
from statsmodels.formula.api import ols
# Create a dataframe
df = pd.read_csv('errShift.csv')
# Performing two-way ANOVA
model = ols('pecount ~ C(rule) + C(stage)', data=df).fit()
anova_table = sm.stats.anova_lm(model, type=2)
# Print the result
print(anova_table)
它正在工作(通过不产生错误),但正在产生一个包含许多 NaN 的奇数方差分析表。这是因为我需要将数据帧合并在一起,以便列中有多个不同的数字(而不仅仅是所有 0 或所有 1)——正如我更改的那样。
评论