gpt4 book ai didi

java - R - lm 和 r 平方

转载 作者:行者123 更新时间:2023-12-02 07:45:30 26 4
gpt4 key购买 nike

我一直在回答这个网站和其他网站上的问题,我只是想确保我明白我的做法是正确的,然后我需要一些建议来分析结果。

我正在将一个 m × n 二进制矩阵从 Java 导出到 R(使用 jri),然后我想针对预期的 0 vector 运行 lm()。

这是将矩阵导入 R 的导出函数

REXP x = re.eval("selectionArray <- c()");

for (int j = 0; j < currentSelection.length; j++){
boolean result = re.assign("currentSNPs", currentSelection[j]);
if (result == true){
x = re.eval("selectionArray <- rbind(selectionArray, currentSNPs)");
}
}

然后我想执行 lm() 函数来获取 r 平方值

            x = re.eval("fm = lm(selectionArray ~ 0)");

我知道此时我需要使用summary(fm)来获取r平方值,但我不确定如何将它们取出或它们此时的含义。我想知道每列与预期 0 值的偏差的显着性。

谢谢!

最佳答案

从名为“m”的“lm”对象中提取 R^2 值

摘要(m)$r.squared

您始终可以使用str()函数查看R中对象的结构;在这种情况下,您需要 str(summary(m))

但是,目前尚不清楚您想要在这里完成什么任务。在 lm() 函数的公式参数中,您指定 selectionArray ~ 0,这没有意义,原因有两个:1) 正如前面所暗示的,0 表示公式的右侧对应于一个模型,其中预测变量是零 vector ,并且无法定义与该预测变量对应的 beta 系数。 2) 你的结果,selectionArray,是一个矩阵。据我所知,lm() 并未设置为具有多种结果。

您是否正在尝试测试选择数组的每一列与 0 不同的显着性?如果是这样,则其中至少有一次成功 (1) 的任何列与 0 列显着不同。如果您对每列中成功概率的置信区间感兴趣,请使用以下代码。请注意,这不会针对多重比较进行调整。

首先让我们从一个玩具示例开始来演示这个概念

v1 <- rbinom(100,size=1,p=.25)  
#create a vector, length 100,
#where each entry corresponds to the
#result of a bernoulli trial with probability p

binom.test(sum(v1), n=length(v1), p = 0)
##let's pretend we didn't just generate v1 ourselves,
##we can use binom.test to determine the 95% CI for p

#now in terms of what you want to do...
#here's a dataset that might be something like yours:
selectionArray <- sapply(runif(10), FUN=function(.p) rbinom(100,size=1,p=.p))
#I'm just generating 10 vectors from a binomial distribution
#where each entry corresponds to 1 trial and each column
#has a randomly generated p between 0 and 1

#using a for loop
#run a binomial test on each column, store the results in binom.test.results
binom.test.results <- list()
for(i in 1:ncol(selectionArray)){
binom.test.results[[i]] <- binom.test(sum(selectionArray[,i]),
n=nrow(selectionArray), p=0)
}

#for loops are considered bad programming in r, so here's the "right" way to do it:
binom.test.results1 <- lapply(as.data.frame(selectionArray), function(.v){
binom.test(sum(.v), n=nrow(selectionArray), p = 0)
})

#using str() on a single element of binom.test.result will help you
#identify what results you'd like to extract from each test

关于java - R - lm 和 r 平方,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10930548/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com