Корректировка значений во фрейме данных таким образом, чтобы выполнялись определенные условия - PullRequest
0 голосов
/ 28 августа 2018

Я работаю над созданием симуляции для своей диссертации и могу использовать некоторую помощь в решении текущей проблемы. Я пытаюсь настроить первые четыре значения в столбце 2 так, чтобы новое значение было 0,01. и затем соответствующие значения в первом столбце поглощают то, что было удалено из второго столбца, так что сообщества остаются постоянными. Общность для каждой строки рассчитывается как

comm1 <- apply(lambda^2,1,sum)

Кроме того, никакое значение во фрейме данных не может быть больше 1 (или меньше -1), поэтому распределение значений, передаваемых в столбец 1, необходимо скорректировать, чтобы компенсировать это. Пожалуйста, дайте мне знать, если я смогу прояснить ситуацию в любом месте, и спасибо за помощь.

Вот пример фрейма данных (лямбда), с которым я работаю, включая способ его генерации.

numfac <- 4
varfac <- 4
size_specific <- .6
size_g <- .4


## Generate true population IC structure
# Generate empty lambda matrix; dimensions controlled by condition

lambda <- matrix(0,nrow=numfac*varfac,ncol=numfac+1)

#Generate specific factor loadings

i<-2
for (i in 2:(numfac+1)) {
  loadings <- seq(size_specific-.1,size_specific+.1,by=(.2/(varfac-1))) 
#from .3 to .5, from .4 to .6, from .5 to .7

  #Write specific factor loadings to lambda matrix
  lambda[((i-2)*varfac+1):((i-1)*varfac),i] <- loadings
}

#Generate general factor loadings and write to lambda matrix
lambda[,1] <- sample(seq(size_g-.1,size_g+.1,by=(.2/(numfac*varfac-1)))) 
#from .3 to .5, from .4 to .6, from .5 to .7

lambda
       [,1]      [,2]      [,3]      [,4]      [,5]
 [1,] 0.3933333 0.5000000 0.0000000 0.0000000 0.0000000
 [2,] 0.3533333 0.5666667 0.0000000 0.0000000 0.0000000
 [3,] 0.3133333 0.6333333 0.0000000 0.0000000 0.0000000
 [4,] 0.4866667 0.7000000 0.0000000 0.0000000 0.0000000
 [5,] 0.3400000 0.0000000 0.5000000 0.0000000 0.0000000
 [6,] 0.4333333 0.0000000 0.5666667 0.0000000 0.0000000
 [7,] 0.3266667 0.0000000 0.6333333 0.0000000 0.0000000
 [8,] 0.3666667 0.0000000 0.7000000 0.0000000 0.0000000
 [9,] 0.4733333 0.0000000 0.0000000 0.5000000 0.0000000
 [10,] 0.4600000 0.0000000 0.0000000 0.5666667 0.0000000
 [11,] 0.4466667 0.0000000 0.0000000 0.6333333 0.0000000
 [12,] 0.4066667 0.0000000 0.0000000 0.7000000 0.0000000
 [13,] 0.3000000 0.0000000 0.0000000 0.0000000 0.5000000
 [14,] 0.3800000 0.0000000 0.0000000 0.0000000 0.5666667
 [15,] 0.5000000 0.0000000 0.0000000 0.0000000 0.6333333
 [16,] 0.4200000 0.0000000 0.0000000 0.0000000 0.7000000
...