Stata:提取p值并将它们保存在列表中
Stata: extract p-values and save them in a list
这可能是一个微不足道的问题,但作为一名来到 Stata 的 R 用户,我到目前为止未能找到正确的 Google 术语来找到答案。我想执行以下步骤:
- 做一堆测试(例如 foreach 循环中的 lrtest 结果)
- 从每个测试中提取 p 值并将它们保存在某种列表中
- 有一个列表我可以对其进行进一步操作(例如执行多重比较校正)
所以我想知道如何从命令结果中提取 p 值(或类似值)以及如何将它们保存到我可以使用的类似矢量的对象中。这是一些执行类似操作的 R 代码:
myData <- data.frame(a=rnorm(10), b=rnorm(10), c=rnorm(10)) ## generate some data
pValue <- c()
for (variableName in c("b", "c")) {
myModel <- lm(as.formula(paste("a ~", variableName)), data=myData) ## fit model
pValue <- c(pValue, coef(summary(myModel))[2, "Pr(>|t|)"]) ## extract p-value and save in vector
}
pValue * 2 ## do amazing multiple comparison correction
在我看来,Stata 的 'programming' 心态似乎比 R 少得多。如果您对可以编程的 R 用户有任何一般性的 Stata 文献推荐,我们也将不胜感激。
这是一种将 p 值保存在矩阵中的方法,然后您可以操作该矩阵,可能使用 Stata 中的 Mata 或标准矩阵操作。
matrix storeMyP = J(2, 1, .) //create empty matrix with 2 (as many variables as we are looping over) rows, 1 column
matrix list storeMyP //look at the matrix
loc n = 0 //count the iterations
foreach variableName of varlist b c {
loc n = `n' + 1 //each iteration, adjust the count
reg a `variableName'
test `variableName' //this does an F-test, but for one variable it's equivalent to a t-test (check: -help test- there is lots this can do
matrix storeMyP[`n', 1] = `r(p)' //save the p-value in the matrix
}
matrix list storeMyP //look at your p-values
matrix storeMyP_2 = 2*storeMyP //replicating your example above
这是怎么回事,Stata 在估计和测试命令后自动存储某些数量。当帮助文件说此命令将以下值存储在 r() 中时,请用单引号引用它们。
您还可以使用 svmat storeMyP
将矩阵列转换为变量,或者查看 help svmat
了解更多信息。
这可能是一个微不足道的问题,但作为一名来到 Stata 的 R 用户,我到目前为止未能找到正确的 Google 术语来找到答案。我想执行以下步骤:
- 做一堆测试(例如 foreach 循环中的 lrtest 结果)
- 从每个测试中提取 p 值并将它们保存在某种列表中
- 有一个列表我可以对其进行进一步操作(例如执行多重比较校正)
所以我想知道如何从命令结果中提取 p 值(或类似值)以及如何将它们保存到我可以使用的类似矢量的对象中。这是一些执行类似操作的 R 代码:
myData <- data.frame(a=rnorm(10), b=rnorm(10), c=rnorm(10)) ## generate some data
pValue <- c()
for (variableName in c("b", "c")) {
myModel <- lm(as.formula(paste("a ~", variableName)), data=myData) ## fit model
pValue <- c(pValue, coef(summary(myModel))[2, "Pr(>|t|)"]) ## extract p-value and save in vector
}
pValue * 2 ## do amazing multiple comparison correction
在我看来,Stata 的 'programming' 心态似乎比 R 少得多。如果您对可以编程的 R 用户有任何一般性的 Stata 文献推荐,我们也将不胜感激。
这是一种将 p 值保存在矩阵中的方法,然后您可以操作该矩阵,可能使用 Stata 中的 Mata 或标准矩阵操作。
matrix storeMyP = J(2, 1, .) //create empty matrix with 2 (as many variables as we are looping over) rows, 1 column
matrix list storeMyP //look at the matrix
loc n = 0 //count the iterations
foreach variableName of varlist b c {
loc n = `n' + 1 //each iteration, adjust the count
reg a `variableName'
test `variableName' //this does an F-test, but for one variable it's equivalent to a t-test (check: -help test- there is lots this can do
matrix storeMyP[`n', 1] = `r(p)' //save the p-value in the matrix
}
matrix list storeMyP //look at your p-values
matrix storeMyP_2 = 2*storeMyP //replicating your example above
这是怎么回事,Stata 在估计和测试命令后自动存储某些数量。当帮助文件说此命令将以下值存储在 r() 中时,请用单引号引用它们。
您还可以使用 svmat storeMyP
将矩阵列转换为变量,或者查看 help svmat
了解更多信息。