我正在尝试计算相关矩阵,并根据p值过滤相关性,以找出高度相关的对。
为了解释我的意思,请说我有一个这样的数据框。
df
A B C D
0 2 NaN 2 -2
1 NaN 1 1 1.1
2 1 NaN NaN 3.2
3 -4 NaN 2 2
4 NaN 1 2.1 NaN
5 NaN 3 1 1
6 3 NaN 0 NaN
Run Code Online (Sandbox Code Playgroud)
为相关系数。我使用了pd.corr()。此方法可以处理具有NaN值的数据帧,更重要的是,它可以容忍具有0重叠的列对(列A和列B):
rho = df.corr()
A B C D
A 1.000000 NaN -0.609994 0.041204
B NaN 1.0 -0.500000 -1.000000
C -0.609994 -0.5 1.000000 0.988871
D 0.041204 -1.0 0.988871 1.000000
Run Code Online (Sandbox Code Playgroud)
挑战在于计算p值。我没有找到执行此操作的内置方法。但是,从具有统计意义的大熊猫列相关性中,@ BKay提供了一种计算p值的循环方法。如果重叠少于3个,此方法将报告错误。因此我通过添加错误异常进行了一些修改。
ValueError:零大小的数组,直到没有身份的最大缩减操作
pval = rho.copy()
for i …Run Code Online (Sandbox Code Playgroud) 我对178尾自由度的双尾t检验进行了线性回归.该summary函数为我的两个t值提供了两个p值.
t value Pr(>|t|)
5.06 1.04e-06 ***
10.09 < 2e-16 ***
...
...
F-statistic: 101.8 on 1 and 178 DF, p-value: < 2.2e-16
Run Code Online (Sandbox Code Playgroud)
我想用这个公式手动计算t值的p值:
p = 1 - 2*F(|t|)
p_value_1 <- 1 - 2 * pt(abs(t_1), 178)
p_value_2 <- 1 - 2 * pt(abs(t_2), 178)
Run Code Online (Sandbox Code Playgroud)
我没有获得与模型摘要中相同的p值.因此,我想知道summary函数Pr(>|t|)与我的公式有何不同,因为我找不到定义Pr(>|t|).
你能帮助我吗?非常感谢!
在 postgres 中,我使用以下函数计算 R2 和斜率:
regr_r2(y,x)
regr_slope(y,x)
Run Code Online (Sandbox Code Playgroud)
有什么方法可以计算与 postgres 中的斜率相关的 p 值吗?
在 R 中,我可以使用phyper () 函数计算超几何分布的 p 值,其中返回数组中的第一个值是 p 值。
我想知道 Go / Golang 中是否有任何包可以让我完全在 Go 中进行计算?
在我的生存分析任务中,我使用了 cox 比例模型来计算数据集不同组中的一致性指数 (c-index) 值。我想知道如何将 p 值添加到我的 c-index 图以比较不同的组看起来像这个图?

这是我的代码:
surv <- with(group, Surv(group$survival, group$time))
# calculate survival
sum.surv_1 <- with(group, summary(coxph(surv ~ group$1)))
sum.surv.1_2 <- with(group, summary(coxph(surv ~ group$1 + group$2,ties = T)))
c_index.1 <- sum.surv_1$concordance
c_index.1_2 <- sum.surv.1_2$concordance
Comb_cIndex = data.frame(rbind(c_index.1["concordance.concordant"],
c_index.1_2["concordance.concordant"]))
barplot(as.matrix(Comb_cIndex), beside=TRUE, axis.lty=1,
ylab = "C Index", ylim = c(0, 0.8),
col = c("green", "blue"))
Run Code Online (Sandbox Code Playgroud)
提前致谢,
考虑一个Data具有多个因子和多个数值连续变量的数据集。这些变量中的一些,比方说slice_by_1(类别为“男性”、“女性”)和slice_by_2(类别为“悲伤”、“中性”、“快乐”)用于将数据“切片”为子集。对于每个子集,Kruskal-Wallis 测试都应该在变量length,上运行preasure,pulse每个变量都由另一个称为 的因子变量分组compare_by。R 中是否有一种快速方法来完成此任务并将计算出的 p 值放入矩阵?
我使用dplyr包来准备数据。
示例数据集:
library(dplyr)
set.seed(123)
Data <- tbl_df(
data.frame(
slice_by_1 = as.factor(rep(c("Male", "Female"), times = 120)),
slice_by_2 = as.factor(rep(c("Happy", "Neutral", "Sad"), each = 80)),
compare_by = as.factor(rep(c("blue", "green", "brown"), times = 80)),
length = c(sample(1:10, 120, replace=T), sample(5:12, 120, replace=T)),
pulse = runif(240, 60, 120),
preasure = c(rnorm(80,1,2),rnorm(80,1,2.1),rnorm(80,1,3))
)
) %>%
group_by(slice_by_1, slice_by_2)
Run Code Online (Sandbox Code Playgroud)
我们来看数据:
Source: local data frame [240 …Run Code Online (Sandbox Code Playgroud) 我尝试进行 t.test,但它给了我这样的错误。
在 R 中使用 t.test() 时出错
没有足够的“x”观察值
数据只有数值,没有 NA。组的比例是10比35。如何避免这种情况?先谢谢您的帮助!
t.test(data$Vrajdeb[data$a=="1"],data$Vrajdeb[data$a=="2"])
Run Code Online (Sandbox Code Playgroud)
Fisher's Exact Test 与超几何分布有关,我希望这两个命令会返回相同的 pvalues。谁能解释我做错了什么,他们不匹配?
#data (variable names chosen to match dhyper() argument names)
x = 14
m = 20
n = 41047
k = 40
#Fisher test, alternative = 'greater'
(fisher.test(matrix(c(x, m-x, k-x, n-(k-x)),2,2), alternative='greater'))$p.value
#returns 2.01804e-39
#geometric distribution, lower.tail = F, i.e. P[X > x]
phyper(x, m, n, k, lower.tail = F, log.p = F)
#returns 5.115862e-43
Run Code Online (Sandbox Code Playgroud) 我正在使用岭回归(ridgeCV)。我从以下位置导入它: from sklearn.linear_model import LinearRegression, RidgeCV, LarsCV, Ridge, Lasso, LassoCV
如何提取 p 值?我检查过,但 ridge 没有名为摘要的对象。
我找不到任何讨论 python 的页面(为 R 找到了一个)。
alphas = np.linspace(.00001, 2, 1)
rr_scaled = RidgeCV(alphas = alphas, cv =5, normalize = True)
rr_scaled.fit(X_train, Y_train)
Run Code Online (Sandbox Code Playgroud) 我想要进行ggplot对数回归并显示 R2 和 p 值。我尝试过stat_cor,但它只显示线性回归的 R2 和 p 值。我尝试将“formula=y~log(x)”合并到 中stat_cor,但说未知参数:公式。我是否必须使用不同的函数才能实现这一点?
ggplot(data = Data,aes(x=Carbon_per,y=Pyrite_per,col=Ecosystem,shape=Ecosystem)) +
geom_smooth(method='lm', formula=y~log(x))+
geom_point() +
stat_cor(aes(label = paste(..rr.label.., ..p.label.., sep = "~`,`~")))
Run Code Online (Sandbox Code Playgroud)
干杯,格洛丽亚
p-value ×10
r ×6
statistics ×5
python ×2
regression ×2
bar-chart ×1
contingency ×1
correlation ×1
ggplot2 ×1
go ×1
pandas ×1
postgresql ×1