1 Câu hỏi: Tính toán và tương quan biểu đồ và khoảng tin cậy của một biến so với nhiều biến

câu hỏi được tạo ra tại Wed, May 8, 2019 12:00 AM

Tôi có dữ liệu sau (đây là phần đầu, dữ liệu thực tế là > 100 hàng) bao gồm tất cả các biến số thứ tự. Trong dữ liệu thực, "Giường" nằm trong khoảng từ 1 đến 8 và tất cả các biến "Thử nghiệm" nằm trong khoảng từ 1 đến 4. Tôi muốn tính toán và vẽ biểu đồ tương quan của từng biến "Testx" với "Giường", nhưng tôi không ' Tôi muốn có một ma trận đầy đủ vì tôi không muốn tương quan các biến "Testx" với nhau.

Đây là một csv của dữ liệu ... Tôi lưu nó dưới dạng "test.csv"

Beds,Test1,Test2,Test3,Test4,Test5,Test6,Test7,Test8
4,4,1,4,4,4,4,3,4
1,3,1,1,1,1,4,2,1
2,4,1,1,2,4,1,1,1
1,4,1,1,4,1,1,1,1
1,2,1,1,1,4,2,2,2
1,4,1,1,1,2,1,1,1
1,1,1,1,1,1,1,1,1
1,1,1,1,1,1,1,1,1
1,1,1,1,1,1,1,1,1
1,4,1,1,4,3,2,2,1

CHỈNH SỬA:

Tôi đã có một kluge hoạt động nhưng không thanh lịch:

test <- read.csv("test.csv")

#Initialize results table as blank dataframe
cTable <- data.frame(matrix(ncol=5, nrow=0))
colnames(cTable) <- c("Test", "Cor", "cL", "cH", "p")

#Begin correlation calculation for Test 1
df <- cor.test(test$Beds, test$Test1)

#Pull the 95% confidence interval and break it into upper and lower limits
interv <- as.character(df$conf.int)
cL <- as.numeric(strsplit(interv, " ")[[1]]) #lower 95% confidence limit
cH <- as.numeric(strsplit(interv, " ")[[2]]) #upper 95% confidence limit

t <- data.frame(Test="Test1", Cor=df$estimate, cL=cL, cH=cH, p=df$p.value)
rownames(t)<-NULL

cTable <- rbind(cTable, t)

rm(df,t) #Repeat code doesn't work unless temporary dataframes are cleared out

#Repeat for Test5
df <- cor.test(test$Beds, test$Test5)

interv <- as.character(df$conf.int)
cL <- as.numeric(strsplit(interv, " ")[[1]])
cH <- as.numeric(strsplit(interv, " ")[[2]])

t <- data.frame(Test="Test5", Cor=df$estimate, cL=cL, cH=cH, p=df$p.value)
rownames(t)<-NULL

cTable <- rbind(cTable, t)

rm(df,t)

Điều này hoạt động, mặc dù có lẽ đó không phải là cách tốt nhất để làm những gì tôi muốn vì bây giờ tôi phải lặp lại nó cho Test2 cho đến Test8. Nhưng nó đã có tác dụng. Tôi đã chạy nó cho Test1 và Test5 bởi vì, khi nó xảy ra, khoảng tin cậy cho Test2 không được xác định. Đây không phải là một vấn đề trong dữ liệu trực tiếp. Đây là đầu ra:

   Test       Cor          cL        cH          p
1 Test1 0.3947710 -0.31253956 0.8204642 0.25890218
2 Test5 0.5921565 -0.05974491 0.8899691 0.07128552

Đầu ra cuối cùng phải có một hàng cho mỗi Testx.

Đầu ra mong muốn khác là một âm mưu với mỗi Textx là một thứ tự trên trục X và hệ số tương quan trên trục Y, với hệ số cộng với khoảng tin cậy được hiển thị. Phần đó hóa ra dễ dàng:

ggplot(cTable, aes(x=cTable$Test, y=cTable$Cor))+
  geom_point(size=4)+
  geom_errorbar(aes(ymax=cTable$cH, ymin=cTable$cL))

Sản phẩm nào tạo ra:

 Âm mưu tương quan với khoảng tin cậy

Vì vậy, tóm lại, tôi có những gì tôi cần, nhưng nó không đẹp để đạt được điều đó. Đối với tôi, dường như phải có một cách để thay thế mã lặp lại ở trên bằng một số lệnh lấy một cột "Giường" và tương ứng nó với tất cả các cột khác, tạo ra cùng một đầu ra mà tôi có ở đây.

    
0
  1. Bạn đã thử cái gì và tại sao nó thất bại? Vui lòng thêm một số mã mẫu.
    2019-05-08 16: 27: 00Z
  2. Tôi không biết phải thử gì ... Tôi nghĩ tôi đã giải thích điều đó. Tôi có thể nhận được các mối tương quan bằng cách sử dụng cor.test, nhưng không thể tìm thấy bất kỳ cách nào để lấy và lập bảng hoặc hoạt động trên đầu ra. Tôi xin lỗi, tôi không biết bắt đầu từ đâu.
    2019-05-08 17: 14: 42Z
  3. Tôi cũng không thể tìm thấy gì cho biết cách tính tương quan qua một bảng, tương quan một biến với nhiều biến khác.
    2019-05-08 17: 16: 54Z
  4. Tự quảng cáo : Bạn có thể thử get_var_corr từ gói tôi đã viết là manymodelr . Nó có thể hữu ích trong trường hợp này. Hiện tại nó chỉ trả về tương quan.
    2019-05-08 17: 18: 31Z
  5. Có hay không có khoảng tin cậy? Tôi thực sự cần phải có được cả hai.
    2019-05-08 17: 24: 00Z
1 Câu trả lời                              1                         

Tôi đã có nó. Câu trả lời là trong Corr.test, một phần của gói "tâm lý". Nó chỉ yêu cầu đặt lại đầu ra để chỉ chọn các tương quan tôi muốn và loại bỏ phần còn lại.

library("ggplot2")
library("data.table") #used for the %like% string operator
library ("psych")  #used for the corr.test function

test <- read.csv("test.csv")

cTab <- print(corr.test(test, use = "pairwise", method = "pearson", adjust = "none"), short=FALSE)
cTab <- cTab[rownames(cTab) %like% "Beds",] #Subsets the variable whose correlations I actually want
cTab$names <- rownames(cTab) #so I can use the rownames as the X variable

ggplot(cTab, aes(x=cTab$names, y=cTab$raw.r))+
  geom_point(size=4)+
  geom_errorbar(aes(ymax=cTab$raw.upper, ymin=cTab$raw.lower), width=0.3, size=0.75)+
  labs(x="Test", y="Correlation Coefficient")+
  theme(plot.title = element_text(hjust = 0.5), plot.subtitle = element_text(hjust=0.5, face = "italic"),
        axis.text.x = element_text(angle = 90, hjust = 1.0))

Đây là kết quả đầu ra trông như thế nào (hãy nhớ Test2 có dữ liệu xấu, tôi không bận tâm sửa nó) Hệ số tương quan với khoảng tin cậy

    
0
2019-05-13 16: 39: 46Z
nguồn đặt đây