2017-02-08 6 views
0

私はR-初心者です、私はすべての製品に考案確率与えたにデータフレーム、作成:どのように相互に関連する変数を持つデータフレームをシミュレートできますか?

set.seed(10) 
data <- data.frame(orderId=sample(c(1:10000), 100000, replace=TRUE), 
        product=sample(c('P1','P2','P3','P4','P5','P6','P7','P8','P9','P10', 'P11','P12','P13','P14','P15', 
            'P16','P17','P18','P19','P20', 
            'z1','z2','z3','z4','z5','z6','z7','z8','z9','z10','z11','z12','z13','z14','z15', 
            'z16','z17','z18','z19','z20','z21','z22','z23','z24','z25','z26','z27','z28', 
            'z29','z30','z31','z32','z33','z34','z35','z36','z37','z38','z39','z40') 
            ,100000, replace=TRUE, 
            prob=c(0.02, 0.03, 0.01, 0.015, 0.023, 0.027, 0.009, 0.013, 0.04, 0.006, 
             0.018, 0.013, 0.025, 0.011, 0.003, 0.007, 0.02, 0.014, 0.01, 0.03, 
             0.02, 0.03, 0.01, 0.015, 0.023, 0.027, 0.009, 0.013, 0.04, 0.006, 
             0.018, 0.013, 0.025, 0.011, 0.003, 0.007, 0.02, 0.014, 0.01, 0.03, 
             0.02, 0.03, 0.01, 0.015, 0.023, 0.027, 0.009, 0.013, 0.04, 0.006, 
             0.018, 0.013, 0.025, 0.011, 0.003, 0.007, 0.02, 0.014, 0.01, 0.03))) 

は、いくつかの変数が互いに相関(例えばP1, P4, P8, z1z3を持っていること、それらをシミュレートすることが可能です相関が高い)。私はRで因子分析を実行するためにこれが必要ですか?ありがとう。この方法で

+0

ここでは、効率的な多変量正規分布から引くことについて質問です。 [可能性のある詐欺?](http://stackoverflow.com/q/22738355/903061) – Gregor

+0

グレゴールは言った。このページ:http://stat.ethz.ch/R-manual/R-devel/library/MASS/html/mvrnorm.htmlをご覧ください。正規分布から一様確率に変換するには、分位数を計算できます。 – thc

+0

私はあなたのprobsを手段として使い、 'prob *(1-prob)'を分散として使用し、あなたが望む共分散を設定します。 – Gregor

答えて

0

# How much sample data 
amountofsample <- 100 

# create a linear var 
a <- 101: eval(100+amountofsample) 

# randomly sample a multiplication factor in a narrow range (tighter the range the closer the corrleation will be) 
b<- sample( seq(1 , 1.1, .01), amountofsample , replace =T) 

# multiply the orginal value by the random number 
f <- a * b 

# create a data.frame with both simulated columns 
a <- data.frame(a , f) 
関連する問題