2017-12-17 4 views
2

중요한 P- 값으로 서브 세트 변수를 만들려고하는데 다음 코드로 시도했지만 조건별로 선택하는 대신 모든 변수 만 선택합니다. 누구든지 문제 해결을 도와 줄 수 있습니까?중요한 P 값으로 서브 세트 변수

myvars <- names(summary(backward_lm)$coefficients[,4] < 0.05) 
happiness_reduced <- happiness_nomis[myvars] 

고마워요!

+0

첫 번째 코드 행을 'myvars'객체에 할당 했습니까? – LAP

+3

'이름 (backward_lm $ coefficients) [summary (backward_lm) $ coefficients [, 4] <0.05]' –

+0

@LAP 예, 그랬습니다. 그것은 오타 였고 지금 편집 할 것입니다. – lydias

답변

5

broom 패키지를 사용한 마틴의 훌륭한 대답 (의견 섹션 참조)의 대체 솔루션입니다. 불행하게도, 당신은 데이터를 게시하지 않은, 그래서 데모로 mtcars 데이터 집합을 사용하고 있습니다 :

library(broom) 

# build model 
m = lm(disp ~ ., data = mtcars) 

# create a dataframe frm model's output 
tm = tidy(m) 

# visualise dataframe of the model 
# (using non scientific notation of numbers) 
options(scipen = 999) 
tm 

#   term estimate std.error statistic  p.value 
# 1 (Intercept) -5.8119829 228.0609389 -0.02548434 0.97990925639 
# 2   mpg 1.9398052 2.5976340 0.74675849 0.46348865035 
# 3   cyl 15.3889587 12.1518291 1.26639032 0.21924091701 
# 4   hp 0.6649525 0.2259928 2.94236093 0.00777972543 
# 5   drat 8.8116809 19.7390767 0.44640796 0.65987184728 
# 6   wt 86.7111730 16.1127236 5.38153418 0.00002448671 
# 7   qsec -12.9742622 8.6227190 -1.50466021 0.14730421493 
# 8   vs -12.1152075 25.2579953 -0.47965832 0.63642812949 
# 9   am -7.9135864 25.6183932 -0.30890253 0.76043942893 
# 10  gear 5.1265224 18.0578153 0.28389494 0.77927112074 
# 11  carb -30.1067073 7.5513212 -3.98694566 0.00067029676 

# get variables with p value less than 0.05 
tm$term[tm$p.value < 0.05] 

# [1] "hp" "wt" "carb" 

가장 큰 장점 dataframe로 모델의 출력을 취득하여이 변수 이름을 사용하고 수 없다는 것입니다 변수 위치 및 행 이름을 사용하여 데이터를 조작합니다.

필터링이 작동하는지 (예 : 데이터 프레임의 과학적 표기법을 사용하지 않음) 쉽게 확인하기 위해 options(scipen = 999)을 사용하고 있습니다.