Как реализовать инкрементную линейную регрессию в R и сохранить коэффициенты регрессии для каждого инкрементального прогона? - PullRequest
0 голосов
/ 28 марта 2019

Я создал таблицу из 4 столбцов:

  • boot: от 1 до 20
  • набор данных: от 1 до 6
  • X: от 0 до7
  • Y: основная переменная, созданная из 20 случайных значений (количество загрузок), для каждого набора данных и каждого X.

Я хочу получить P-значение, связанное с t-значение на 95% -ном процентиле наклона линейной регрессии между Y и X, суммированным в уникальной таблице: от 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будет для X = 0,1,2,3, для набора данных1

Наконец: последний запуск должен быть 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) для каждого прогона (линейная регрессия).

...