Re: [程式] R迴圈--簡單線性迴歸
※ 引述《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
討論串 (同標題文章)