尝试与 groupby 和 Anova 一起工作

Trying to work together with groupby and Anova

我有一个数据集,其中包含家庭人数(1 到 4)和贷款(0 和 1)的分类值。我想知道家庭规模的平均值和贷款之间是否存在显着差异。 我做了 groupby 以按家庭规模计算贷款数量:

gp = df.groupby(["Family", "Personal Loan"])["Personal Loan"].count()

输出

Family  Personal Loan
1       0                1365
        1                 107
2       0                1190
        1                 106
3       0                 877
        1                 133
4       0                1088
        1                 134

现在我需要应用 f_two 方式方差分析来查看贷款和家庭人数之间是否存在显着差异。需要帮助如何去做。

您不能使用计数数据和二元响应进行双向方差分析。你可以做的是 chisq 测试,以测试 loan==1 的比例在所有家庭中并不相等:

import seaborn as sns
import pandas as pd
from scipy.stats import chi2_contingency

我必须找回像你原来的 df 这样的东西:

df = pd.DataFrame({
    'Family':np.repeat(np.arange(1,5),[1472,1296,1010,1222]),
    'Personal Loan':np.repeat([0,1,0,1,0,1,0,1],
    [1365,107,1190,106,877,133,1088,134]),
})
gp = df.groupby(["Family","Personal Loan"])["Personal Loan"].count()
gp

Family  Personal Loan
1       0                1365
        1                 107
2       0                1190
        1                 106
3       0                 877
        1                 133
4       0                1088
        1                 134
Name: Personal Loan, dtype: int64

现在我们使用交叉表进行卡方检验:

contingency = pd.crosstab(df['Family'],df['Personal Loan'])
test = chi2_contingency(contingency)
test

(29.676116414854746, 1.6144121228248757e-06, 3, array([[1330.688,  141.312],
        [1171.584,  124.416],
        [ 913.04 ,   96.96 ],
        [1104.688,  117.312]]))

第二个值 1.614e-06 是所有贷款 == 1 比率都相等的测试的 p 值