作者rockken ()
看板Statistics
标题Re: [程式] R回圈--简单线性回归
时间Wed Mar 28 22:06:14 2012
※ 引述《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
1F:推 clever1510:太感谢了!!! 谢谢! 03/29 12:14