首页 > 解决方案 > 统计测试:(感知;实际结果;以及下一步)如何相互作用?

问题描述

perceptionoutcome和之间的相互作用是什么outlook

我已将它们带入分类变量以[潜在地]简化事情。

import pandas as pd
import numpy as np

high, size = 100, 20
df = pd.DataFrame({'perception': np.random.randint(0, high, size),
                   'age': np.random.randint(0, high, size),
                   'smokes_cat': pd.Categorical(np.tile(['lots', 'little', 'not'],
                                                        size//3+1)[:size]),
                   'outcome': np.random.randint(0, high, size),
                   'outlook_cat': pd.Categorical(np.tile(['positive', 'neutral',
                                                          'negative'],
                                                          size//3+1)[:size])
                  })
df.insert(2, 'age_cat', pd.Categorical(pd.cut(df.age, range(0, high+5, size//2),
                                              right=False, labels=[
                                               "{0} - {1}".format(i, i + 9)
                                               for i in range(0, high, size//2)])))

def tierify(i):
    if i <= 25:
        return 'lowest'
    elif i <= 50:
        return 'low'
    elif i <= 75:
        return 'med'
    return 'high'

df.insert(1, 'perception_cat', df['perception'].map(tierify))
df.insert(6, 'outcome_cat', df['outcome'].map(tierify))

np.random.shuffle(df['smokes_cat'])

在线运行:http: //ideone.com/fftuSvhttps://repl.it/repls/MicroLeftSequences


这是伪造的数据,但应该提出这个想法。个人有一个感知的观点perception,然后他们呈现与实际outcome,并从中可以决定他们的outlook

使用 Python(pandas,或任何真正开源的东西),我如何显示这 3 个依赖之间交互的概率- 和p值 -<strong> (可能使用,作为潜在的混杂因素)?agesmokes_cat

标签: statisticsregressionprobabilitynon-linear-regressionhypothesis-test

解决方案


您可以将交互图用于此特定目的。这非常适合您的情况。我会为您的数据使用这样的图。我已经为您在问题中生成的虚拟数据尝试了它,您可以编写如下代码。虽然将其视为伪代码,但您必须根据需要定制代码。

以其简单的形式:

  • 如果图中的线有交点或可能有其他值,那么您可以假设存在交互作用。
  • 如果线平行或不太可能有交点,则假设没有交互作用。

但是,为了获得更多和更深入的理解,我放置了一些您可以查看的链接。

代码

... # The rest of the code in the question.

# Interaction plot
import matplotlib.pyplot as plt
from statsmodels.graphics.factorplots import interaction_plot

p = interaction_plot(
               x = df['perception'],
               trace=df['outlook_cat'],
               response= df['outcome']
     )
plt.savefig('./my_interaction_plot.png') # or plt.show()

interaction_plot() 您可以在此处找到文档。此外,我还建议您运行方差分析。

进一步阅读

您可以查看以下链接:


推荐阅读