如何在R中实现增量线性回归并保存每个增量运行的回归系数?

时间:2019-03-28 15:55:43

标签: r multidimensional-array linear-regression increment

我创建了一个由4列组成的表格:

  • 启动:从1到20
  • 数据集:从1到6
  • X:从0到7
  • Y:为每个数据集和每个X使用20个随机值(启动次数)创建的主变量。

我想获得在唯一表中汇总的Y和X之间线性回归的斜率的95%百分数处与t值关联的P值: 从Ny = 3到Ny = 8,从Nd = 1到Nd = 6,其中,Ny是X的数量,Nd是回归中包含的数据集的数量。

所以:run1应该是:Nd = 1,Ny = 3

第一个t值(a = 0.05)/对应的p值用于回归,包括X:0,1,2,数据集= 1

然后:run2应该为:Nd = 1,Ny = 4

第二个p值将用于数据集1的X = 0、1、2、3

...

最后:最后一次运行应为Nd = 6,Ny = 8

最后一个p值将是X 0、1、2、3,…,7数据集1+数据集2 +…+数据集= 6

这是创建的数据集:

Y_ini=1680
r=73
var = 0.4
inter=250

boot = 20
X = 7
dataset = 6

Run0 <- NULL

for (i in 0:X){
  for (j in 1:dataset){
    print(i)
    print(j)
    Y=data.frame(Y_ini + i*Y_ini*var/100 + rnorm(n = boot, mean = 0, sd = r)+ rnorm(n = boot, mean = 0, sd = inter))
    colnames(Y)<-"Y"
    Y$boot=seq(1,boot)
    Y$X=i
    Y$dataset=j
    Run0 <-rbind(Run0,Y)              
    name1 <-paste(X,"Y.csv",sep="_")
    name2<- paste(dataset,name1,sep="_")
    name3<- paste(boot,name2,sep="_")
  }
}
Run0 <- Run0[, c(2, 4, 3, 1)] 
write.table(Run0,file=file.path(dossier,name3),col.names=TRUE, row.names=FALSE, sep=";",dec=".")

我尝试了几件事,但这不是我想要的

res1<-NULL
for (Ny in 3:X{
  for (Nd in 1:dataset){
if (Run0$X <= Ny && Run0$dataset <= Nd ){ 
  print(Ny)
    print(Nd)
    p_v <- coef(summary(lm(Run0$Y~Run0$X)))[2,4]
    t_v <- coef(summary(lm(Run0$Y~Run0$X)))[2,3]
    res<- data.frame(Ny,Nd,p_v,t_v)
    res1<-rbind(res1,res)
    }
  }
}
write.table(res1,file=file.path(dossier,"stat.csv"),col.names=TRUE, row.names=FALSE, sep=";",dec=".")

表已正确创建,但p值和t_value不变,这表明增量回归未正确完成。

在那个阶段,我不知道如何处理我的问题。

任何帮助将不胜感激。

结果应显示在最终表中,该表应包含4列:每次运行Nd,Ny,p值,t值(a = 0.05)(线性回归)。

0 个答案:

没有答案