2017-07-03 590 views
0

我正在對數據應用線性迴歸模型,並使用relaimpo包找出最重要的因素。R + Tableau連接:使用線性迴歸和Relaimpo包;在R中工作但未連接

當運行中的R下面的代碼,它工作正常

library(readxl) 
nba <- read_excel("XXXX") 
View(nba) 


library(relaimpo) 
rec = lm(won ~ o_fgm + o_ftm + o_pts , data = nba) 
x= calc.relimp(rec, type = c("lmg"), rela = TRUE, rank = TRUE) 
x$lmg 

我得到的輸出:

o_fgm  o_ftm  o_pts 
0.3374366 0.2628543 0.3997091 

當通過的Tableau連接我使用下面的代碼:

SCRIPT_REAL(" 
won=.arg1 
o_fgm=.arg2 
o_ftm=.arg3 
o_pts=.arg4 


library(relaimpo) 
rec = lm(won ~ o_fgm + o_ftm + o_pts) 
x= calc.relimp(rec, type = c('lmg'), rela = TRUE, rank = TRUE) 

" 
,MEDIAN([Won]),MEDIAN([O Fgm]),MEDIAN([O Ftm]),MEDIAN([O Pts])) 

我收到以下錯誤:

An error occurred while communicating with the RServe service. 
Error in calc.relimp.default.intern(object = structure(list(won = 39, : Too few complete observations for estimating this model 

我已經運行它只是迴歸,它運行良好;所以看起來問題在於relaimpo軟件包。這個軟件包的在線文檔有限,所以我找不到修復程序;任何幫助真的很感謝謝謝!

數據是從在kaggle https://www.kaggle.com/open-source-sports/mens-professional-basketball

(以下簡稱 「basketball_teams.csv」 文件)

+0

這兩種情況下的公式不同。 –

+0

更新:我一直在玩很多不同的版本,因此複製了錯誤的版本。任何變量數量的變量都會產生相同的錯誤。 – user2420956

回答

1

當的Tableau調用使用SCRIPT_REAL()函數,或者任何SCRIPT_XXX()函數R或Python,它使用Tableau稱之爲表格計算。這具有傳遞R一個或多個向量 - 並接收向量結果的效果 - 而不是爲每個標量單元調用一次函數。

但是,您有責任指定如何將聚合結果劃分爲向量,以及如何對發送給R或Python的向量中的行進行排序。您可以通過Edit Table Calc命令(右鍵單擊calc字段)指定每個表格calc的「分區」和「尋址」。

所以最可能的問題是,您發送的R數據少於您的預期,可能是許多短的向量,而不是您想要的那麼長的一個。閱讀在線幫助中的表計算和分區和尋址。您可以指定分區,特別是通過選擇哪些維度爲而不是設置爲「compute using」(尋址維度的同義詞)。Table Calc編輯器在嘗試不同設置時爲您提供一些可見的反饋 - 我建議在大多數情況下使用特定維度案例。

對於表計算,分區和尋址的選擇與實際公式同樣重要。