在 R 中,我可以使用phyper () 函数计算超几何分布的 p 值,其中返回数组中的第一个值是 p 值。
我想知道 Go / Golang 中是否有任何包可以让我完全在 Go 中进行计算?
我目前正在构建一个回归模型,该模型有助于使用收入、温度等某些因素来解释销售情况。在检查回归后的残差图时,残差是异方差的。
为了解释异方差性,我在 R 中使用了vcovHC()和coeftest(),它可用于在异方差性假设下重新计算标准误差及其 p 值。但这些函数返回 NA 值,因此所有相应的 p 值也是 NA。导致此问题的原因可能是什么以及如何解决?其代码如下:
fit_p <- lm(formula = final_list_p, data = new_data_p)
s_p <- summary(fit_p)
Run Code Online (Sandbox Code Playgroud)
线性回归输出的汇总统计数据为:
Residuals:
Min 1Q Median 3Q Max
-244190 -60770 -5759 59730 311108
Coefficients:
Estimate
(Intercept)
Std. Error t value Pr(>|t|)
var1 -3.36E+05 1.77E+05 -1.893 0.059026 .
var2 -2.90E+04 4.96E+03 -5.86 8.97E-09 ***
var3 -1.75E+05 8.93E+04 -1.958 0.050834 .
var4 -4.62E+00 2.80E+00 -1.653 0.098975 .
var5 2.39E+01 7.85E+00 3.04 0.002503 **
var6 -6.32E+04 1.08E+05 -0.588 …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)
我想找到最适合某些数据的分布。这通常是某种测量数据,例如力或扭矩。
理想情况下,我想运行具有多个分布的 Anderson-Darling,并选择具有最高 p 值的分布。这类似于Minitab中的“拟合优度”检验。我无法找到计算 p 值的 Anderson-Darling 的 python 实现。
我尝试过scipy, stats.anderson()但它只返回 AD 统计量和具有相应显着性水平的临界值列表,而不是 p 值本身。
我也研究过statsmodels,但似乎只支持正态分布。我需要比较几种分布(正态分布、威布尔分布、对数正态分布等)的拟合度。
python 中是否有返回 p 值并支持非正态分布的 Anderson-Darling 实现?
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) 我尝试将 p 值添加到我ggplot使用的stat_compare_means函数中。然而,我在 ggplot 中得到的 p 值与基本 wilcox.test 的结果不同。
我在这两种情况下都使用了配对测试,并且还在 ggplot 中使用了 wilcoxon 测试。
\n\n我尝试搜索我的问题,但找不到确切的答案。\n我更新了 R(v. 3.5.2)、R-Studio(v. 1.1.463)和所有软件包。下面我添加了几行代码和示例。我对 R 和统计数据很陌生,所以如果我以新手的方式提问,请原谅我。
\n\nlibrary("ggplot2") \nlibrary("ggpubr")\n\n\nc1 <- c( 798.3686, 2560.9974, 688.3051, 669.8265, 2750.6638, 1136.3535, \n 1335.5696, 2347.2777, 1149.1940, 901.6880, 1569.0731 ,3915.6719, \n 3972.0250 ,5517.5016, 4616.6393, 3232.0120, 4020.9727, 2249.4150, \n 2226.4108, 2582.3705, 1653.4801, 3162.2784, 3199.1923, 4792.6118) \nc2 <- c(0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1) \n\ntest <-data.frame(c2,c1) \n\ntest$c2 <- as.factor(test$c2) \n\nggplot(test, aes(x=c2, y=c1)) + \n stat_compare_means(paired = TRUE) \n\nwilcox.test( test$c1~ test$c2, paired= TRUE) \n …Run Code Online (Sandbox Code Playgroud) 使用 ToothGrowth 数据集(内置于 R 中),我使用了以下代码。
library(ggplot2)
library(tidyverse)
library(ggpubr)
p <- ggboxplot(ToothGrowth, x = "supp", y = "len",
color = "supp", palette = "jco",
add = "jitter",
facet.by = "dose", short.panel.labs = FALSE)
p + stat_compare_means(label = "p.format")
Run Code Online (Sandbox Code Playgroud)
现在,我希望 p 值有 4 位数字。我研究了以前的类似帖子,然后尝试了以下两个选项
p + stat_compare_means(label = "p.format", digits = 4)
p + stat_compare_means(label = "p.format", round(p.format, 4))
Run Code Online (Sandbox Code Playgroud)
不幸的是,两者都不起作用。可能有人有解决方案吗?谢谢你。
本题参考《O'Relly Practical Statistics for Data Scientist 2nd Edition》一书第 3 章,卡方检验部分。
本书提供了一个卡方测试用例的示例,其中假设一个网站具有三个不同的标题,由 1000 名访问者运行。结果显示每个标题的点击次数。
观察到的数据如下:
Headline A B C
Click 14 8 12
No-click 986 992 988
Run Code Online (Sandbox Code Playgroud)
期望值的计算公式如下:
Headline A B C
Click 11.13 11.13 11.13
No-click 988.67 988.67 988.67
Run Code Online (Sandbox Code Playgroud)
表现在的位置:
Headline A B C
Click 0.792 -0.990 0.198
No-click -0.085 0.106 -0.021
Run Code Online (Sandbox Code Playgroud)
卡方统计量是 Pearson 残差平方和:
。这是 1.666
到目前为止,一切都很好。现在是重采样部分:
1. Assuming a box of 34 ones and 2966 zeros
2. Shuffle, and take three samples of 1000 and count how …Run Code Online (Sandbox Code Playgroud) 我尝试用这些帖子的答案解决了我的问题,但没有成功: 指示条形图中统计上的显着差异使用R, 如何绘制具有显着水平的箱线图?并将 星标放在ggplot条形图和箱线图上 - 表示显着性水平(p值).
我想添加一些线条和标签来显示使用R的分组条形图中的重要性,就像红色矩形内部的那样.

这是我提出的更简单的代码版本:
#### DATA
g <- as.factor(c('Kit1_A', 'Kit2_A', 'Kit1_B', 'Kit2_B','Kit1_C', 'Kit2_C'))
groups <- rep(g, 3)
targets <- c(rep('X', 6), rep('Y', 6), rep('Z', 6))
mean <- c(20.8, 23.8, 21.61667, 23.54583, 22.26250, 25.41250, 20.39583, 23.82917, 20.70000, 23.82917, 21.52083, 24.83333, 20.68750, 24.60000, 20.78750, 24.42083, 22.86667, 25.28750)
sd <- c(1.249251, 1.137451, 2.372480, 2.439704, 2.149715, 1.465997, 1.579936, 0.944777, 2.320555, 1.419932, 2.636766, 2.820217, 2.014647, 1.384187, 2.193378, 1.685869, 3.456228, 2.197052)
df <-data.frame(groups, targets, mean, sd)
#### Barplot
library(ggplot2) …Run Code Online (Sandbox Code Playgroud) 尽管搜索了两天的相关问题,但我尚未真正找到该问题的答案...
在下面的代码中,我生成了n个正态分布的随机变量,然后将其表示为直方图:
import numpy as np
import matplotlib.pyplot as plt
n = 10000 # number of generated random variables
x = np.random.normal(0,1,n) # generate n random variables
# plot this in a non-normalized histogram:
plt.hist(x, bins='auto', normed=False)
# get the arrays containing the bin counts and the bin edges:
histo, bin_edges = np.histogram(x, bins='auto', normed=False)
number_of_bins = len(bin_edges)-1
Run Code Online (Sandbox Code Playgroud)
之后,找到曲线拟合函数及其参数。它通常使用参数a1和b1进行分布,并使用scale_factor进行缩放,以满足样本未标准化的事实。它确实非常适合直方图:
import scipy as sp
a1, b1 = sp.stats.norm.fit(x)
scaling_factor = n*(x.max()-x.min())/number_of_bins
plt.plot(x_achse,scaling_factor*sp.stats.norm.pdf(x_achse,a1,b1),'b')
Run Code Online (Sandbox Code Playgroud)
在那之后,我想使用卡方检验来测试此函数对直方图的拟合程度。该测试使用这些点的观测值和预期值。为了计算期望值,我首先计算每个bin中间的位置,此信息包含在数组x_middle中。然后,我在每个bin的中间点计算拟合函数的值,从而得到了Expected_value数组:
observed_values = histo
bin_width = bin_edges[1] - …Run Code Online (Sandbox Code Playgroud) p-value ×10
r ×6
statistics ×4
python ×3
chi-squared ×2
ggplot2 ×2
bar-chart ×1
boxplot ×1
contingency ×1
go ×1
lm ×1
scipy ×1