Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python statsmodels线性回归-patsy公式,包括模型中的所有预测因子_Python_R_Statsmodels - Fatal编程技术网

Python statsmodels线性回归-patsy公式,包括模型中的所有预测因子

Python statsmodels线性回归-patsy公式,包括模型中的所有预测因子,python,r,statsmodels,Python,R,Statsmodels,假设我有一个数据帧(我们称之为DF),其中y是因变量,x1、x2、x3是自变量。在R中,我可以使用以下代码拟合线性模型,将包括模型中的所有自变量: # R code for fitting linear model result = lm(y ~ ., data=DF) 如果不将我所有的自变量显式地添加到公式中,我想不出如何使用patsy公式来处理statsmodels。patsy是否有与R的等效的代码?我在patsy的文档中没有找到它 我在patsy文档中也没有找到类似的。但它在简洁性方面的

假设我有一个数据帧(我们称之为
DF
),其中
y
是因变量,
x1、x2、x3
是自变量。在R中,我可以使用以下代码拟合线性模型,
将包括模型中的所有自变量:

# R code for fitting linear model
result = lm(y ~ ., data=DF)

如果不将我所有的自变量显式地添加到公式中,我想不出如何使用patsy公式来处理statsmodels。patsy是否有与R的
等效的代码?我在patsy的文档中没有找到它

我在patsy文档中也没有找到类似的
。但它在简洁性方面的不足,可以通过在Python中提供强大的字符串操作来弥补。因此,您可以使用

all_columns = "+".join(DF.columns - ["y"])
在您的情况下,这将提供
x1+x2+x3
。最后,您可以使用
y
创建字符串公式,并将其传递给任何拟合过程

my_formula = "y~" + all_columns
result = lm(formula=my_formula, data=DF)

我在patsy文档中也没有找到类似的
。但它在简洁性方面的不足,可以通过在Python中提供强大的字符串操作来弥补。因此,您可以使用

all_columns = "+".join(DF.columns - ["y"])
在您的情况下,这将提供
x1+x2+x3
。最后,您可以使用
y
创建字符串公式,并将其传递给任何拟合过程

my_formula = "y~" + all_columns
result = lm(formula=my_formula, data=DF)

不,不幸的是,这在帕西还不存在。看看这个。

不,不幸的是,这在帕特西还不存在。见此。

因为这仍然没有包含在
patsy
中,所以我编写了一个小函数,当我需要在所有列中运行
statsmodels
模型时调用它(可选例外情况)

def ols_公式(df,相依变量,*排除列):
'''
为给定的statsmodels(patsy)生成R样式公式
dataframe、因变量和可选的排除列
作为字符串
'''
df_columns=list(df.columns.values)
df_列。删除(依赖变量)
对于排除在外的列:
df_列。移除(列)
返回依赖的_var+'~'+'+'.join(df_列)

例如,对于一个名为
df
的数据帧,其列
y,x1,x2,x3
,运行
ols_公式(df,'y,'x3')
返回
'y~x1+x2'
,因为这仍然没有包含在
patsy
中,所以我编写了一个小函数,当我需要运行所有列的
statsmodels
模型时调用它(可选例外情况)

def ols_公式(df,相依变量,*排除列):
'''
为给定的statsmodels(patsy)生成R样式公式
dataframe、因变量和可选的排除列
作为字符串
'''
df_columns=list(df.columns.values)
df_列。删除(依赖变量)
对于排除在外的列:
df_列。移除(列)
返回依赖的_var+'~'+'+'.join(df_列)

例如,对于名为
df
的数据帧,列为
y、x1、x2、x3
,运行
ols\u公式(df'y',x3')
返回
'y~x1+x2'

我目前正在使用这种方法-能够在Python中进行字符串操作当然很好!我只是想确保我没有忽略patsy中的某些内容。是的,我猜
正是因为字符串操作而不可用。另一个动态收缩的示例导出公式:选择所有以
x
开头的变量,而不是以
z
开头的变量。在R中做起来很混乱,但在Python中很简单。不过,如果有人更了解patsy,我很想找到替代方法。@SudeepJuvekar。我不认为缺少点的情况是这样。R还有一个强大而简单的字符串操作(使用paste,paste0)并提供一个智能的公式符号。因此,它只是pasty中缺少的一个功能,或者尚未实现。它未在patsy中实现的唯一原因是我和其他任何人都没有找到时间来实现:-)这里有一个部分尝试,如果其他人想试一试,讨论可能会很有用:
DF.columns-[“y”]
给了我一个错误。对我有效的语法是
DF.columns.difference([“y”])
我目前正在使用这种方法-能够在Python中进行字符串操作当然很好!我只是想确保我没有忽略patsy中的某些内容。是的,我猜正是由于字符串操作,
不可用。动态构造公式的另一个示例:选择以
x
开头而不是以
z
开头的所有变量。在R中很混乱,但在Python中很简单。不过,如果有人更了解帕西,我很乐意找到其他选择。我不这么认为,因为缺少一点。R还具有强大且简单的字符串操作(使用paste、paste0)并提供智能公式表示法。因此,它只是pasty中缺少的一个功能或尚未实现。它未在patsy中实现的唯一原因是我和其他任何人都没有找到时间来实现:-)这里有一个部分尝试,如果其他人想尝试,讨论可能会有用:
DF.columns-[“y”
给了我一个错误。对我有效的语法是
DF.columns.difference([“y”])
您能提供一个包含多个要排除的列的示例吗?您能提供一个包含多个要排除的列的示例吗?