2016-06-19 130 views
0

我試圖運行glmmLasso估計與命令混合模式:glmmLasso警告信息

glm1_final <- glmmLasso(Activity~Novelty + Valence + ROI, rnd = 
list(Subject=~1), data = KNov, lambda=lambda[opt],switch.NR=F,final.re=TRUE) 

此代碼基本上是從demo("glmmLasso-soccer")拍攝,但我的變量取代活動是大腦活動的措施。 ,Novelty和Valence是編碼用於引發反應的刺激類型的分類變量,ROI是編碼大腦三個區域的分類變量,我們從中抽取了該活動。主題是數據採樣個體的身份證號碼(n = 94)。 lambda[opt]在前面的步驟中被設置,儘管之前的步驟也給了我所述的錯誤,所以我不知道它是否準確。

總是收到兩個警告:

警告消息:1:在split.default((1:NcoI位(X))[ - inotpen.which],IPEN):數據長度不是多個分裂變量2:羣集變量應被指定爲一個因子變量

第一隻發生如果:在est.glmmLasso.RE(固定=修復,RND = RND,數據的數據,波長=拉姆達,=投資回報率在模型中,我沒有發現我可以對模型做出任何改變,以使第二次消失。我不知道這些警告是什麼意思,並且谷歌還沒有發現任何關於它們的信息。我仍然得到了我的參數估計值,但我不知道它們是否準確,因爲我不知道警告的意思。

任何人都知道這些警告是什麼意思?

UPDATE:

我已經上傳我的數據的簡寫爲版本:Google Drive

我已經證實我仍然得到了第二個錯誤,如果我運行代碼:

KNov <- read.table("Nov_abr.txt", header = TRUE) 
KNov$Subject <- factor(KNov$Subject) 
library(glmmLasso) 
glmmLasso(Activity~Novelty + Valence + ROI, rnd = list(Subject=~1), data = KNov, lambda=10,switch.NR=F,final.re=TRUE) 

的KNov $ Subject < - factor(KNov $ Subject)確實清除了另一個錯誤。

RI的版本都爲:R版本3.3.0(2016年5月3日),平臺: 「I386-W64-mingw32的」

+0

歡迎來到堆棧溢出!你可以請包括數據和/或代碼,將爲我們提供一個[可重現的例子](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)?我們可以(至少)看到'str(KNov)'的結果嗎? –

+0

@BenBolker我已經添加了數據,感謝您的幫助! – xralphyx

回答

3

您應該使用

KNov$Subject <- factor(KNov$Subject) 

擺脫的第一個警告,並as.factor(ROI)您的固定效應公式中的,如記錄(下面重點加入):

修正:描述了該模型的 固定效應部分雙面線性式對象,與「〜」運算符左側的 響應以及右側的「+」 運算符分隔的條款。 對於分類協變量,在公式中使用 'as.factor(。)'。請注意,相應的 假人被視爲一組,並更新嵌段

所以

glmmLasso(Activity~Novelty + Valence + as.factor(ROI), 
     rnd = list(Subject=~1), 
     data = KNov, lambda=10,switch.NR=F,final.re=TRUE) 

似乎工作(我仍然得到一個警告,但我認爲這是因爲我使用一小部分數據)。 (該語法也在?glmmLasso中的「具有分類協變量的線性混合模型」中進行了說明)。是的,獲得更明確的警告消息會很好,但文檔中的答案 ...

+0

這確實消除了該警告。不過,我也想測試與ROI的互動。如果我跑 'glmmLasso(Activity〜Novelty + Valence + as.factor(ROI)+ Novelty:as.factor(ROI)+ Novelty:Valence:as.factor(ROI), rnd = list(Subject =〜1) (數據,strsplit(fac.name),錯誤代碼爲[數據],數據= KNov,lambda = 10,switch.NR = F,final.re = TRUE) 我得到錯誤 '[.data.frame' ,「:」)[[1]] [1]): 未定義列選擇' – xralphyx

+0

我的猜測是,你將不得不建立自己的模型矩陣/虛擬變量;我認爲公式中的'as.factor()'是專門處理的,所以包括交互術語可能就是它。 (這將是值得嘗試的as.factor(Novelty:ROI)' - 我懷疑它會起作用,但是如果這樣做會是最簡單的方法。)(我可能會更新我的答案,但從技術上講,你要求另一個問題......) –

+0

快速說明 - ROI是否需要as.factor(),因爲它有兩個以上的級別(而不是Valence的Novelty,它們也是分類的)? – xralphyx