【问题标题】:ANOVA syntax in RPy2RPy2 中的方差分析语法
【发布时间】:2015-09-21 19:50:08
【问题描述】:

第一次在 Python 中使用 RPy2 实现。尝试使用两个因素进行单向方差分析。它在另一台机器上的 R 中工作,但 Python 不喜欢这种语法。任何想法表示赞赏!

from rpy2.robjects import aov

huanova = aov(formula = df1['human_den'] ~ df1['region']+df1['years'])

错误消息指向 tilda。

huanova = aov(formula=df1['human_den'] ~ df1['region']+df1['years'])
                                       ^
SyntaxError: invalid syntax

【问题讨论】:

  • 错误信息是什么?
  • @CactusWoman 添加了错误消息。只是一个简单的 SyntaxError

标签: python r rpy2 anova


【解决方案1】:

根据documentation about Formulae in Rpy2,您必须将公式作为字符串传递。这是一种方法:

from rpy2.robjects import aov
from rpy2.robjects import Formula

formula = Formula('human_den ~ region + years')
env = formula.environment
env['human_den'] = df1['human_den']
env['region'] = df1['region']
env['years'] = df1['years']

huanova = aov(formula = formula)

【讨论】:

  • aov 不在robjects 中。
【解决方案2】:

以上来自musically_ut 的回答将起作用,但您需要使用importr 加载包含aov 函数的'stats' 包,如this question 所示:

from rpy2.robjects import Formula 
from rpy2.robjects.packages import importr
stats = importr('stats')

formula = Formula('human_den ~ region + years')
env = formula.environment
env['human_den'] = df1['human_den']
env['region'] = df1['region']
env['years'] = df1['years']

huanova = stats.aov(formula = formula)

【讨论】:

    【解决方案3】:

    波浪号 ~ 在 python 中是一元的,但您将它用作二进制。你可能想要:

     huanova = aov(formula = df1['human_den'] + ~ df1['region']+df1['years'])
    

    请注意,我在波浪号之前添加了一个加号。

    【讨论】:

    • 一点也不(!@ all )。 R 中的波浪号是公式定义的一部分。它不会转换为 Python 的一元波浪号。我因此投了反对票。
    • 我不知道 R 中的波浪号,但这里 OP 出现语法错误,因为 Python 中的波浪号是一元的。应该有一种方法可以使用 R 的波浪号,但不是那样
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-15
    • 2014-03-20
    • 1970-01-01
    • 2012-05-23
    • 2011-02-25
    • 1970-01-01
    相关资源
    最近更新 更多