我試圖將回歸函數應用於因子(主題)的每個單獨的級別。這個想法是,對於每個主題,我可以根據他們的實際閱讀時間(RT)和相應打印字符串(WordLen)的長度來獲得預測閱讀時間。一位同事幫助我解決了一些基於(Subject)中另一個函數(Region)的每個級別應用函數的代碼。但是,無論是原始代碼還是我的嘗試修改(在單個因素間使用跨功能的功能)都可以使用。應用迴歸,同時循環R中的因子水平
下面是一些樣本數據的嘗試:
test0<-structure(list(Subject = c(101L, 101L, 101L, 101L, 101L, 101L,
101L, 101L, 101L, 101L, 102L, 102L, 102L, 102L, 102L, 102L, 102L,
102L, 102L, 102L, 103L, 103L, 103L, 103L, 103L, 103L, 103L, 103L,
103L, 103L), Region = c(1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L,
1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 2L,
2L, 2L, 2L, 2L), RT = c(294L, 241L, 346L, 339L, 332L, NA, 399L,
377L, 400L, 439L, 905L, 819L, 600L, 520L, 811L, 1021L, 508L,
550L, 1048L, 1246L, 470L, NA, 385L, 347L, 592L, 507L, 472L, 396L,
761L, 430L), WordLen = c(3L, 3L, 3L, 3L, 3L, 3L, 5L, 7L, 3L,
9L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 5L, 7L, 3L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 5L, 7L, 3L)), .Names = c("Subject", "Region", "RT", "WordLen"
), class = "data.frame", row.names = c(NA, -30L))
不幸的是,這個數據正在恢復,我不跟我的完整數據集得到了一個問題:
"Error in lm.fit(x, y, offset = offset, singular.ok = singular.ok, ...) :
0 (non-NA) cases"
也許這是因爲樣本數據太小?
無論如何,我希望有人看到這個問題的代碼,儘管我提供工作數據的能力......
這是原來的代碼(不工作):
for(i in 1:length(levels(test0$Subject)))
for(j in 1:length(levels(test0$Region)))
{tmp=predict(lm(RT~WordLen,test0[test0$Subject==levels(test0$Subject)[i] & test0$Region==levels(test0$Region)[j],],na.action="na.exclude"))
test0[names(tmp),"rt.predicted"]=tmp
}
,這是修改後的代碼(這並不奇怪,也不起作用):
for(i in 1:length(levels(test0$Subject)))
{tmp=predict(lm(RT~WordLen,test0[test0$Subject==levels(test0$Subject)[i],],na.action="na.exclude"))
test0[names(tmp),"rt.predicted"]=tmp
}
我將非常感謝任何建議。
也看到'? 'nlme'包中的lmList'。 – 2013-03-12 12:44:18