2017-11-26 73 views
-2

Bonferroni 수정을위한 RStudio와 Pearson Correlation Matrix의 원시 P 값을 코딩하는 방법을 고집합니다. 나는 학생이고 R에 처음이다. 데이터의 평균, SD 및 n 테이블을 얻는 방법에 대해서도 분실했다. 피어슨 상관 행렬을 계산할 때 나는 방금 r 값을 얻었고 원시 확률 값도 얻지 못했습니다. RStudio에서 코드를 작성하는 방법을 잘 모르겠습니다. 나는 Bonferroni Correction을 계산하려고 시도했고리스트 객체가 double을 입력하도록 강요 될 수 없다는 에러 메시지를 받았다. 이것이 사라지도록 내 코드를 수정하려면 어떻게해야합니까? 데이터의 평균, SD 및 n 테이블을 만들려고했는데 계속 진행하는 방법에 집착했습니다. (쉼표로 분리) 파일 내가 dplyr, tidyr, multcomp, 내가 엑셀 ​​CSV에서 데이터를 읽어 multcompview 를 설치 한R : Bonferroni 수정을위한 오류 코딩을 수정하는 방법

Tree Height DBA Leaf Diameter 
45.3 14.9 0.76 
75.2 26.6 1.06 
70.1 22.9 1.19 
95  31.8 1.59 
107.8 35.5 0.43 
93  26.2 1.49 
91.5 29  1.19 
78.5 29.2 1.1 
85.2 30.3 1.24 
50  16.8 0.67 
47.1 12.8 0.98 
73.2 28.4 1.2 

패키지 및이 데이터> dataHW8_1 12obs을 만들어 다음과 같이

내 데이터입니다. 3 개 변수

summary(dataHW8_1) 

의 내가 다음 데이터 플롯의 산점도 (dataHW8_1 $ Tree_Height, dataHW8_1 $ DBA, 주 = "가슴 높이 (DBA)에서 산점도 나무 높이 대 트렁크 직경"을 만들어, xlab = "나무의 높이 (cm) ", ylab ="DBA (cm) ") plot (dataHW8_1 $ Tree_Height, dataHW8_1 $ Leaf_Diameter, main ="Scatterplot Tree 높이 대 잎의 지름 ", xlab ="나무 높이 (cm) ", ylab ="잎 (DBA) 대 잎의 지름에서 산란 트렁크 직경, xlab = "DBA (cm)", ylab = "잎의 지름 (cm)") plot (dataHW8_1 $ DBA, dataHW8_1 $ Leaf_Diameter, main = "Breast Height) ")

그런 다음 데이터가 선형이 아닌 것으로 나타났습니다. R은 그래서

이 그때 그때 산점도

매트릭스 플롯을 생성

plot(dataHW8_1log$Tree_Height,dataHW8_1log$DBA,main="Scatterplot of 
Transformed (log)Tree Height Vs Trunk Diameter at Breast Height 
(DBA)",xlab="Tree Height (cm)",ylab="DBA (cm)") 
plot(dataHW8_1log$Tree_Height,dataHW8_1log$Leaf_Diameter,main="Scatterplot 
of Transformed (log)Tree Height Vs Leaf Diameter",xlab="Tree Height 
(cm)",ylab="Leaf Diameter (cm)") 
plot(dataHW8_1log$DBA,dataHW8_1log$Leaf_Diameter,main="Scatterplot of 
Transformed (log) Trunk Diameter at Breast Height (DBA) Vs Leaf 
Diameter",xlab="DBA (cm)",ylab="Leaf Diameter (cm)") 

변환 된 데이터를 사용하여 내 산점도 재생성 로그() fucntion dataHW8_1log = 로그 (dataHW8_1)을 사용하여 형질

pairs(dataHW8_1log) 

다음으로 Pearson 방법을 사용하여 상관 계수를 계산했습니다. 이것은 P 값의 비 계산 매트릭스를 제공하지 않습니다 .- 어떻게 그럴 수 있습니까? 당신은 그렇게 할

cor(dataHW8_1log,method="pearson") 

난 후 페로 니 보정을 계산

데이터의 원시 확률의 매트릭스 (수정되지 않은 P 값)을 얻기 위해 무엇을해야하는지에 붙어 있어요 ----- 방법 ? 나는 lapply 사용하여 해결하기 위해 노력

Error in p.adjust(dataHW8_1log, method = "bonferroni") : 
(list) object cannot be coerced to type 'double' 

,하지만

난 후 평균의 테이블을 만들려고 내 promblem 해결되지 않은 : 이렇게

Data$Bonferroni = 
p.adjust(dataHW8_1log, 
method = "bonferroni") 

나에게 follwing을 오류를 준 SD, n,하지만 다음 코드 만 만들 수 있었고 거기에서 어디로 가야 할 지 고착되었습니다 .- 어떻게 그럴 수 있습니까?

(,data = dataHW8_1log, 
     FUN = function(x) c(Mean = mean(x, na.rm = T), 
          n = length(x), 
          sd = sd(x, na.rm = T)) 

나는 온라인에서 예제를 시도했지만, 아무도 Bonferroni Correction을 올바르게 코딩하는 데 도움이되지 못했습니다.누구든지 내가 잘못한 것을 설명하고 매트릭스/테이블을 만드는 방법을 설명 할 수 있다면 크게 감사하겠습니다.

답변

0

다음은 50 행 10 열 샘플 데이터 프레임을 사용하는 예입니다.

# 50 rows x 10 columns sample dataframe 
df <- as.data.frame(matrix(runif(500), ncol = 10)); 

우리는 pairwise scatterplot을 보여줄 수 있습니다.

# Pairwise scatterplot 
pairs(df); 

enter image description here

우리는 이제 하나의 비교를 위해 P-값을 얻을 수 cor.test를 사용할 수 있습니다. 우리는 모든 pairwise 비교를 위해 편리한 함수 cor.test.p을 사용합니다. 신용이 만기가되는 곳에 신용을주기 위해, cor.test.p 함수는 this SO post에서 가져 왔고, 수정되지 않은 p- 값의 행렬을 반환하는 동안 dataframe을 인수로 취합니다.

# cor.test on dataframes 
# From: https://stackoverflow.com/questions/13112238/a-matrix-version-of-cor-test 
cor.test.p <- function(x) { 
    FUN <- function(x, y) cor.test(x, y)[["p.value"]]; 
    z <- outer(
     colnames(x), 
     colnames(x), 
     Vectorize(function(i,j) FUN(x[,i], x[,j]))); 
    dimnames(z) <- list(colnames(x), colnames(x)); 
    return(z); 
} 

# Uncorrected p-values from pairwise correlation tests 
pval <- cor.test.p(df); 

우리는 모든 행에 페로 니 보정을 적용하여 여러 가설 검증 이제 올바른 (또는 열, 행렬이 대칭이기 때문에) 우리가 완료됩니다. p.adjust은 p- 값의 벡터를 인수로 취합니다.

# Multiple hypothesis-testing corrected p-values 
# Note: pval is a symmetric matrix, so it doesn't matter if we correct 
# by column or by row 
padj <- apply(pval, 2, p.adjust, method = "bonferroni"); 
padj; 
#V1 V2  V3 V4  V5  V6 V7 V8  V9 V10 
#V1 0 1 1.0000000 1 1.0000000 1.0000000 1 1 1.0000000 1 
#V2 1 0 1.0000000 1 1.0000000 1.0000000 1 1 1.0000000 1 
#V3 1 1 0.0000000 1 0.9569498 1.0000000 1 1 1.0000000 1 
#V4 1 1 1.0000000 0 1.0000000 1.0000000 1 1 1.0000000 1 
#V5 1 1 0.9569498 1 0.0000000 1.0000000 1 1 1.0000000 1 
#V6 1 1 1.0000000 1 1.0000000 0.0000000 1 1 0.5461443 1 
#V7 1 1 1.0000000 1 1.0000000 1.0000000 0 1 1.0000000 1 
#V8 1 1 1.0000000 1 1.0000000 1.0000000 1 0 1.0000000 1 
#V9 1 1 1.0000000 1 1.0000000 0.5461443 1 1 0.0000000 1 
#V10 1 1 1.0000000 1 1.0000000 1.0000000 1 1 1.0000000 0 
+0

'qdapTools'패키지를 다운로드 한 후해볼 것입니다. 실제로 코드를 실행해도 작동하지 않습니다. 내가 'corr.test (dataHW8_1log, method = "pearson", adjust = "bonferroni")를했을 때 뭔가 중요한 부분이 있다면 astreik이 표시되지 않고 정확하지 않은 결과가 나타납니다. 'cor.test (dataHW8_1 $ Tree_Height, dataHW8_1 $ DBA, method = "pearson")'를 선택하면 'p-value = 5.853e-06'이라는 결과가 발생합니다. 그러나 'corr.test'가 나에게주는 테이블을 보면 확률 값은 '0.00'입니다. 나는 여전히 평균의 표를 얻는 방법에 대한 상실감이있다. –

+0

@ N.J'cor.test'는 p 값을 제공합니다! 별표 표기법 (dreadful)은 필요한 경우 스스로 적용해야하는 항목입니다. 통계적 유의성은 p- 값의 관점에서 표현됩니다 (귀하의 경우에는 r = 0 인 Pearson의 product-moment 상관 계수에 해당합니다). 내 예제는 확실히 작동하고 일관성이있다. 나는'qdapTools'을 모른다. 그래서 나는 당신을 도울 수 없다. 예를 들어를 사용하여 소스 데이터의 평균 및 sd를 얻을 수 있습니다. 'sapply (귀하의 데이터 프레임, 평균)'및'sapply (귀하의 데이터 프레임, SD)'. –