Re: [程式] R迴圈--簡單線性迴歸

看板Statistics作者時間13年前 (2012/03/28 22:06), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《clever1510 (clever)》之銘言: : [軟體程式類別]: : R : [程式問題]: : 迴圈 : [軟體熟悉度]: : 請把以下不需要的部份刪除 : 新手(不到1個月) : [問題敘述]: : 我想讓簡單線性迴歸重複執行很多次 : 將T-value 或 F-value 輸出成表格 : 例如我有一個10個column的表 : 第一個column 是Y 要"分別"對,其餘column 迴歸並檢測 : 我想的流程大概是這樣 : C1 與 C2 做迴歸 --->T-value 1 : C1 與 C3 做迴歸 --->T-value 2 : . : . : . : C1 與 C9做迴歸 --->T-value 9 : 輸出 T-value1~9 : 可是不知道怎麼寫迴圈 : [程式範例]: : 這是目前我編輯好的部分 : #open file : directory<-"C://"; : filename<-"CP7_Ttest.txt"; : #read file : a<-read.table(paste(directory, filename, sep=""), header=T, nrows=500, skip=0); : print(names(a)); : Y<-a[,c(1)]; X<-a[,c(2:10)]; rm(a); : #?lm() : i=1 : for(i in 1:9) : { : Xa = X[,i] : model = lm(formula = Y ~ Xa) : model : summary (model) : i=i+1 : } : 我參考R 大的意見修改了 : 可是對於結果輸出仍有疑問 : 不知道怎樣將不同次的結果輸出成一個文件 妳要做 9 次測試,先宣告暫存空間,如果是數列可以用c(), 矩陣用matrix(NA,nrow=次數,ncol=預存個數),如果不知道預存個數長度建議用 matrix(list(),nrow=次數,ncol=1)。 依你預想存迴歸 T值 或是 F 值,共三個數,因為簡單迴歸有兩參數。 你應該先宣告 output=matrix(NA,nrow=9,ncol=3) 參考修改程式 ------------------------------------------------------------ output=matrix(NA,nrow=9,ncol=3) : Y<-a[,c(1)]; X<-a[,c(2:10)]; rm(a); : #?lm() for(i in 1:9) { Xa = X[,i] model = lm(formula = Y ~ Xa) model #給你看你跑出結果,可以留著 summary (model) #給你看你跑出結果,可以留著 A=summary (model) A$coefficients[,3] #簡單迴歸兩參數T值 A$fstatistic #簡單迴歸F值與自由度取第一個即可 output[i,1:2]=as.numeric(A$coefficients[,3]) output[i,3]=as.numeric(A$fstatistic[1]) } 跑完可以對矩陣命名,這段可以省略。 colnames(output)=c("Intercept t value","groupTrt t value","F-statistic") rownames(output)=1:9 -- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.35.198.94

03/29 12:14, , 1F
太感謝了!!! 謝謝!
03/29 12:14, 1F
文章代碼(AID): #1FSnhQnn (Statistics)
文章代碼(AID): #1FSnhQnn (Statistics)