【发布时间】:2021-01-06 05:16:26
【问题描述】:
多年来,我有多个国家/地区的多个变量。我想为每对变量生成一个包含 R^2 值和 P 值的数据框。我有点接近,有一个最小的工作示例和最终产品应该是什么样子的想法,但在实际实现它时遇到了一些困难。如果有人可以提供帮助,将不胜感激。
请注意,与使用 Hmisc 之类的软件包相比,我更愿意手动执行此操作,因为这会产生许多其他问题。我也曾四处寻找类似的解决方案,但运气不佳。
# Code to generate minimum working example (country year pairs).
library(tidyindexR)
library(tidyverse)
library(dplyr)
library(reshape2)
# Function to generate minimum working example data
simulateCountryData = function(N=200, NEACH = 20, SEED=100){
variableOne<-rnorm(N,sample(1:100, NEACH),0.5)
variableOne[variableOne<0]<-0
variableTwo<-rnorm(N,sample(1:100, NEACH),0.5)
variableTwo[variableTwo<0]<-0
variableThree<-rnorm(N,sample(1:100, NEACH),0.5)
variableThree[variableTwo<0]<-0
geocodeNum<-factor(rep(seq(1,N/NEACH),each=NEACH))
year<-rep(seq(2000,2000+NEACH-1,1),N/NEACH)
# Putting it all together
AllData<-data.frame(geocodeNum,
year,
variableOne,
variableTwo,
variableThree)
return(AllData)
}
# This runs the function and generates the data
mySimData = simulateCountryData()
我对如何获得 2 个手动选择的变量之间的相关性(p 值和 r 值)有一个合理的想法,但是在整个数据集和国家层面(而不是一次全部)实现它时遇到了一些麻烦.
# Example pvalue
corrP = cor.test(spreadMySimData$variableOne,spreadMySimData$variableTwo)$p.value
# Examplwe r value
corrEst = cor(spreadMySimData$variableOne,spreadMySimData$variableTwo)
最后,最终结果应该是这样的:
myVariables = colnames(spreadMySimData[3:ncol(spreadMySimData)])
myMatrix = expand.grid(myVariables,myVariables)
# I'm having trouble actually trying to get the r values and p values in the dataframe
myMatrix = as.data.frame(myMatrix)
myMatrix$Pval = runif(9,0.01,1)
myMatrix$Rval = runif(9,0.2,1)
myMatrix
再次感谢:)
【问题讨论】:
标签: r dataframe dplyr correlation