簡體   English   中英

為什么Statsmodels OLS不支持讀取包含多個單詞的列?

[英]Why does Statsmodels OLS doesn't support reading in columns with multiple words?

我一直在嘗試使用Seaborn的lmplot()和Statsmodels .ols()函數來處理簡單的線性回歸圖及其相關的p值,r平方等。

我注意到當我指定要用於lmplot的列時,我可以指定一個列,即使它有多個單詞:

import seaborn as sns
import pandas as pd
input_csv = pd.read_csv('./test.csv',index_col = 0,header = 0)
input_csv

CSV圖

sns.lmplot(x='Age',y='Count of Specific Strands',data = input_csv)
<seaborn.axisgrid.FacetGrid at 0x2800985b710>

在此輸入圖像描述

但是,如果我嘗試使用ols,我輸入“特定鏈的數量”作為我的因變量時輸入錯誤(我只列出了錯誤中的最后幾行):

import statsmodels.formula.api as smf
test_results = smf.ols('Count of Specific Strands ~ Age',data = input_csv).fit()

File "<unknown>", line 1
    Count of Specific Strands
           ^
SyntaxError: invalid syntax

相反,如果我指定如下所示的“特定鏈的計數”,則回歸起作用:

test_results = smf.ols('input_csv.iloc[:,1] ~ Age',data = input_csv).fit()
test_results.summary()

回歸結果

有人知道為什么嗎? 是不是因為Statsmodels是如何寫的? 是否有替代方法可以為不涉及iloc或loc的回歸分析指定因變量?

這是由於編寫公式解析器patsy的方式: 有關詳細信息,請參閱此鏈接

然而, patsy的作者想到了這個問題:(引自這里

這種靈活性確實會在一種情況下產生問題 - 因為我們將您在+符號之間寫的任何內容解釋為Python代碼,實際上您必須編寫有效的Python代碼。 如果您的變量名稱中包含有趣的字符(如空格或標點符號),這可能會非常棘手。 幸運的是,patsy有一個名為Q()的內置“轉換”,可以讓你“引用”這些變量

因此,在您的情況下,您應該能夠寫:

smf.ols('Q("Count of Specific Strands") ~ Age',data = input_csv).fit()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM