2014-11-26 2 views
0

안녕하세요 저는 R이 처음이므로 좀 더 일반적인 질문을하고 싶습니다. 여기에 올리기에 적합한 예제 데이터 세트를 시뮬레이션하거나 생성하는 방법과 동시에 재현성을 소유하는 방법은 무엇입니까? 예를 들어, 데이터 세트를 적절하게 추상화하는 숫자 예제를 작성하고 싶습니다. 하나의 조건은 내 종속 변수와 독립 변수 사이의 상관 관계를 구현하는 것입니다. 예를 들어. 내 카운트와 내 in.var1in.var2 사이의 상관 관계를 소개하는 방법?데이터를 올바르게 시뮬레이션하는 방법은 무엇입니까?

set.seed(1122) 
count<-rpois(1000,30) 
in.var1<- rnorm(1000, mean = 25, sd = 3) 
in.var1<- rnorm(1000, mean = 12, sd = 2) 
data<-cbind(count,in.var1,in.var2) 
+0

[mvrnorm]와 같은 기능 (http://stat.ethz.ch/R-manual/R-patched/library/MASS을 고려 /html/mvrnorm.html)을'MASS' 패키지에서 제거하여 다변량 정규 확률 변수를 시뮬레이트합니다. – MrFlick

+1

여기에 어떤 질문이 있습니까? 게시 된 코드는 완전히 재현 가능하므로 문제가되지 않습니다. –

답변

3

넌 의존성을 도입 할위한 3 가로 Var1 0.5의 계수 -0.25를 보여줄 것이다 카운트 변수 :

특별히 상관 정규 확률 변수에서 찾는 경우
 set.seed(1222) 
       in.var1<- rnorm(1000, mean = 25, sd = 3) 
     #Corrected spelling of in.var2 
       in.var2<- rnorm(1000, mean = 12, sd = 2) 
    count<-rpois(1000,30) + 0.15*in.var1 + 0.3*in.var2 
    # Avoid use 'data` as an object name 
    dat<-data.frame(count,in.var1,in.var2) 

> spearman(count, in.var1) 
     rho 
0.06859676 
> spearman(count, in.var2) 
     rho 
0.1276568 
> spearman(in.var1, in.var2) 
     rho 
-0.02175273 

> summary(glm(count ~ in.var1 + in.var2, data=dat)) 

Call: 
glm(formula = count ~ in.var1 + in.var2, data = dat) 

Deviance Residuals: 
    Min  1Q Median  3Q  Max 
-16.6816 -3.6910 -0.4238 3.4435 15.5326 

Coefficients: 
      Estimate Std. Error t value Pr(>|t|)  
(Intercept) 29.05034 1.74084 16.688 < 2e-16 *** 
in.var1  0.14701 0.05613 2.619 0.00895 ** 
in.var2  0.35512 0.08228 4.316 1.74e-05 *** 
--- 
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 
+0

나는이 대답을 좋아하지만, 한 가지 명심해야 할 것이있다. 'in.var'는 정수가 아니므로'count '는 더 이상 정수가 아닙니다. 문제가 될 수도 있지만 문제가 될 수도 있습니다. –

0

데이터에 패턴을 추가하고 싶습니다.

# Basic info taken from Data Science Exploratory Analysis Course 
# http://datasciencespecialization.github.io/courses/04_ExploratoryAnalysis/ 

set.seed(1122) 

rowNumber = 1000 

count<-rpois(rowNumber,30) 
in.var1<- rnorm(rowNumber, mean = 25, sd = 3) 
in.var2<- rnorm(rowNumber, mean = 12, sd = 2) 
data<-cbind(count,in.var1,in.var2) 


dataNew <- data 



for (i in 1:rowNumber) { 
    # flip a coin 
    coinFlip <- rbinom(1, size = 1, prob = 0.5) 
    # if coin is heads add a common pattern to that row 
    if (coinFlip) { 
    dataNew[i,"count"] <- 2 * data[i,"in.var1"] + 10* data[i,"in.var2"] 
    } 
} 

는 기본적으로, 패턴 수가 어떤 임의의 행 여기 coinFlip 변수 = 2 * 10 * + in.var1 in.var2을 추가하고있다. 물론 더 많은 행을 벡터화해야합니다.

1

count의 기능을 in.var1invar.2으로 지정하려면이 기능을 사용하십시오. count 아직 내가 Count

set.seed(1122) 
in.var1<- rnorm(1000, mean = 4, sd = 3) 
in.var2<- rnorm(1000, mean = 6, sd = 2) 
Count<-rpois(1000, exp(3+ 0.5*in.var1 - 0.25*in.var2)) 
Data<-data.frame(Count=Count, Var1=in.var1, Var2=in.var2) 

이제 in.var1in.var2에 따라 포아송 수 있습니다로 변경하고 함수 이름이라고합니다. 포아송 회귀의 구성에 두 변수의 "정보"의 일부에 추가하여 Var2

summary(glm(Count~Var1+Var2,data=Data, family=poisson)) 

Call: 
glm(formula = Count ~ Var1 + Var2, family = poisson, data = Data) 

Deviance Residuals: 
    Min  1Q Median  3Q  Max 
    -2.84702 -0.76292 -0.04463 0.67525 2.79537 

Coefficients: 
      Estimate Std. Error z value Pr(>|z|)  
(Intercept) 3.001390 0.011782 254.7 <2e-16 *** 
Var1   0.499789 0.001004 498.0 <2e-16 *** 
Var2  -0.250949 0.001443 -173.9 <2e-16 *** 
--- 
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

(Dispersion parameter for poisson family taken to be 1) 

Null deviance: 308190.7 on 999 degrees of freedom 
Residual deviance: 1063.3 on 997 degrees of freedom 
AIC: 6319.2 

Number of Fisher Scoring iterations: 4 
관련 문제