2017-02-17 57 views
0

我在處理一個既能輸出迴歸摘要到csv文件又能處理迴歸分析的函數時遇到問題。因此,代碼如下所示:處理函數中的錯誤,通知然後跳過

我有三個預測變量: AGE-1(連續),gender1(分類0/1),FLUSHOT(分類0/1)

在文件中,第一個100列是我想測試的響應變量(所有分類0/1)。

目標是對每個響應變量(1:100)進行迴歸分析,並僅輸出p值,OR和CI。

所以我的代碼的東西看起來是這樣的:

fun1<-function(x){ 
    res<-c(paste(as.character(summary(x)$call),collapse = " "), 
     summary(x)$coefficients[4,4], 
     exp(coef(x))[4], 
     exp(confint(x))[4,1:2],"\n") 

    names(res)<-c("call","p-value","OR","LCI","UCI","") 
    return(res)} 


res2=NULL 
lms=list() 
for(i in 1:100) 
{ 
    lms[[i]]=glm(A[,i]~age1+gender1+as.factor(FLUSHOT),family="binomial",data=A)    
    res2<-rbind(res2,fun1(lms[[i]])) 
} 
write.csv(res2,"A_attempt1.csv",row.names=F) 

舉例來說,如果我們有足夠的樣本量在各個類別,或者如果邊際頻率是這樣的:

table(variable1,FLUESHOT) 
    0 1 
0 15 3 
1 11 19 

此代碼的工作很好,但如果我們有這樣的:

table(variable15,FLUESHOT) 
     0 1 
    0 15 0 
    1 11 19 

碰上代碼錯誤,報告和停止。

我嘗試了多種方式使用try()tryCatch(),但似乎沒有爲我工作。

回答

0

你看到了什麼錯誤信息?您可以嘗試使用rms軟件包中的lrm來估計邏輯迴歸模型。和texreg輸出到csv。

+0

吉,謝謝你的回覆。我得到的錯誤代碼是這樣的。 誤差約爲(sp $ y,sp $ x,xout = cutoff): 需要至少兩個非NA值進行插值 是否有任何可能的方法來繞過此錯誤? –

+0

嗨Yayi,這意味着你的數據有時完全缺失(或只有一個觀察)。另外,try-catch只會讓你找不到你需要刪除的數據中的錯誤。我建議你循環播放數據並檢查每個嘗試模型是否可用(例如交叉列表DV和一個功能)。 – katharina

+0

是的,這正是我所做的,在運行之前將其清理乾淨,並且工作正常。非常感謝你。然而,我仍然在跳躍,只會輸出錯誤,然後繼續前進而不停止整個過程。希望我能弄明白。 –