我收集了几项研究的数据.对于每项研究,我都对性别变量的平均值感兴趣,如果这显着不同.对于每项研究,我对男性和女性都有平均值和95%置信区间.
我想做的是类似的事情:

我使用了几种类型的点图(dotplot,dotplot2,Dotplot),但没有完全实现.
使用Dotplotfrom Hmisc我设法有一个系列及其错误栏,但我对如何添加第二个系列感到茫然.
我使用Dotplot并得到了误差条的垂直结束,遵循这里给出的建议.
这是我正在使用的代码的一个工作示例
data<-data.frame(ID=c("Study1","Study2","Study3"),avgm=c(2,3,3.5),avgf=c(2.5,3.3,4))
data$lowerm <- data$avgm*0.9
data$upperm <- data$avgm*1.1
data$lowerf <- data$avgf*0.9
data$upperf <- data$avgf*1.1
# Create the customized panel function
mypanel.Dotplot <- function(x, y, ...) {
panel.Dotplot(x,y,...)
tips <- attr(x, "other")
panel.arrows(x0 = tips[,1], y0 = y,
x1 = tips[,2], y1 = y,
length = 0.05, unit = "native",
angle = 90, code = 3)
}
library(Hmisc)
Dotplot(data$ID ~ Cbind(data$avgm,data$lowerm,data$upperm), col="blue", pch=20, panel = mypanel.Dotplot,
xlab="measure",ylab="study")
Run Code Online (Sandbox Code Playgroud)
这绘制了三列数据,男性的平均值(avgm),以及95%置信区间(lowerm和upperm)的下限和上限.我有其他三个系列,对于相同的研究,对女性受试者做同样的工作(avgf,lowerf,upperf). …
我试图获得一些指数适合某些x,y数据的置信区间(此处可用).这是MWE我必须找到最适合数据的指数:
from pylab import *
from scipy.optimize import curve_fit
# Read data.
x, y = np.loadtxt('exponential_data.dat', unpack=True)
def func(x, a, b, c):
'''Exponential 3-param function.'''
return a * np.exp(b * x) + c
# Find best fit.
popt, pcov = curve_fit(func, x, y)
print popt
# Plot data and best fit curve.
scatter(x, y)
x = linspace(11, 23, 100)
plot(x, func(x, *popt), c='r')
show()
Run Code Online (Sandbox Code Playgroud)
产生:

如何在这个拟合上获得95%(或其他一些值)的置信区间,最好使用pure python,numpy或者scipy(我已经安装过的软件包)?
首先,我应该说明我的统计知识相当有限,所以如果我的问题看似微不足道或者甚至没有意义,请原谅我.
我的数据似乎没有正常分布.通常情况下,当我绘制置信区间时,我会使用平均值+ - 2标准偏差,但我不认为这对于非均匀分布是可以接受的.我的样本量目前设置为1000个样本,这似乎足以确定它是否是正态分布.
我使用Matlab进行所有处理,因此Matlab中是否有任何函数可以轻松计算置信区间(比如说95%)?
我知道有'分位数'和'prctile'功能,但我不确定这是否是我需要使用的.函数'mle'也返回正态分布数据的置信区间,尽管您也可以提供自己的pdf.
我可以使用ksdensity为我的数据创建一个pdf,然后将该pdf输入到mle函数中以给我置信区间吗?
另外,我将如何确定我的数据是否正常分布.我的意思是我现在可以通过查看ksdensity的直方图或pdf来判断,但有没有办法对其进行定量测量?
谢谢!
我正在尝试编写一个通用函数来计算R中二项式比例的区间估计的覆盖概率.我打算为各种置信区间方法执行此操作,例如Wald,Clopper-Pearson,用于不同先验的HPD区间.
理想情况下,我希望有一个函数,作为参数,可以采用应该用于计算间隔的方法.那么我的问题是:如何在另一个函数中包含函数作为参数?
例如,对于Exact Clopper-Pearson区间,我有以下功能:
# Coverage for Exact interval
ExactCoverage <- function(n) {
p <- seq(0,1,.001)
x <- 0:n
# value of dist
dist <- sapply(p, dbinom, size=n, x=x)
# interval
int <- Exact(x,n)
# indicator function
ind <- sapply(p, function(x) cbind(int[,1] <= x & int[,2] >= x))
list(coverage = apply(ind*dist, 2, sum), p = p)
}
Run Code Online (Sandbox Code Playgroud)
其中Exact(x,n)只是计算适当间隔的函数.我想拥有
Coverage <- function(n, FUN, ...)
...
# interval
int <- FUN(...)
Run Code Online (Sandbox Code Playgroud)
因此我有一个函数来计算覆盖概率,而不是每个区间计算方法的单独覆盖函数.有没有标准的方法来做到这一点?我一直无法找到解释.
谢谢,詹姆斯
这是一些数据
dat = data.frame(y = c(9,7,7,7,5,6,4,6,3,5,1,5), x = c(1,1,2,2,3,3,4,4,5,5,6,6), color = rep(c('a','b'),6))
Run Code Online (Sandbox Code Playgroud)
以及这些数据的图表,如果你愿意的话
require(ggplot)
ggplot(dat, aes(x=x,y=y, color=color)) + geom_point() + geom_smooth(method='lm')
Run Code Online (Sandbox Code Playgroud)
使用该功能运行模型时MCMCglmm()...
require(MCMCglmm)
summary(MCMCglmm(fixed = y~x/color, data=dat))
Run Code Online (Sandbox Code Playgroud)
我得到估计的下限和上限95%,允许我知道两个斜率(颜色= a和颜色= b)是否显着不同.
看这个输出时......
summary(glm(y~x/color, data=dat))
Run Code Online (Sandbox Code Playgroud)
......我看不到置信区间!
我的问题是:
使用该功能时,如何估算这些较低和较高的95%间隔置信度glm()?
我制作了一个模型,该模型着眼于许多变量及其对妊娠结局的影响.结果是分组二进制.一群动物将有34个怀孕和3个空,接下来将有20个怀孕和4个空等等.
我使用glmery是怀孕结果(怀孕或空怀)的函数对这些数据建模.
mclus5 <- glmer(y~adg + breed + bw_start + year + (1|farm),
data=dat, family=binomial)
Run Code Online (Sandbox Code Playgroud)
我得到所有通常的系数等输出但是对于解释我想将其转换为每个系数的优势比和置信区间.
在过去的逻辑回归模型中,我使用了以下代码
round(exp(cbind(OR=coef(mclus5),confint(mclus5))),3)
Run Code Online (Sandbox Code Playgroud)
这将很好地提供我想要的东西,但它似乎不适用于我运行的模型.
有谁知道我可以通过R为我的模型获得此输出的方式?
我在2年前提到这个问题,用ggplot:调整stat_smooth线的透明度(alpha),而不仅仅是置信区间的透明度
建议的第一种方法允许单独设置置信区间的Alpha透明度:
ggplot(head(airquality, 60), aes(x=Day, y=Temp, color=factor(Month))) +
geom_point() + stat_smooth(method = "lm", se=TRUE, alpha=1.0)
Run Code Online (Sandbox Code Playgroud)

第二种方法允许为行本身设置alpha透明度,但在此期间你会失去置信区间,即使se=TRUE:
ggplot(head(airquality, 60), aes(x=Day, y=Temp, color=factor(Month))) +
geom_point() + geom_line(stat='smooth', method = "lm", se=TRUE, alpha=0.3)
Run Code Online (Sandbox Code Playgroud)

我的问题:如何控制平滑线和置信区间的透明度?
上次我询问如何计算每个测量时间(周)的平均分数,对于多个受访者重复测量的变量(procras).所以我的(简化)长格式数据集看起来像下面的例子(这里有两个学生,5个时间点,没有分组变量):
studentID week procras
1 0 1.4
1 6 1.2
1 16 1.6
1 28 NA
1 40 3.8
2 0 1.4
2 6 1.8
2 16 2.0
2 28 2.5
2 40 2.8
Run Code Online (Sandbox Code Playgroud)
使用dplyr我会得到每个测量场合的平均分数
mean_data <- group_by(DataRlong, week)%>% summarise(procras = mean(procras, na.rm = TRUE))
Run Code Online (Sandbox Code Playgroud)
看起来像这样:
Source: local data frame [5 x 2]
occ procras
(dbl) (dbl)
1 0 1.993141
2 6 2.124020
3 16 2.251548
4 28 2.469658
5 40 2.617903
Run Code Online (Sandbox Code Playgroud)
使用ggplot2,我现在可以绘制随时间的平均变化,并通过轻松调整dplyr的group_data(),我也可以获得每个子组的平均值(例如,男性和女性的每次平均得分).现在我想在mean_data表中添加一个列,其中包括每个场合平均得分95%-CIs的长度.
http://www.cookbook-r.com/Graphs/Plotting_means_and_error_bars_(ggplot2)/解释了如何获取和绘制CI,但这种方法似乎一旦我想为任何子组执行此操作就会出现问题,对吧?那么有没有办法让dplyr在mean_data中自动包含CI(基于组大小等)?之后,将新值作为CI绘制到我希望的图表中应该相当容易.谢谢.
有没有办法在qqplot中添加置信区间?
我有一个基因表达值的数据集,我用PCA可视化:
pca1 = prcomp(data, scale. = TRUE)
我现在通过检查数据与正态分布的分布来寻找异常值:
qqnorm(pca1$x,pch = 20, col = c(rep("red", 73), rep("blue", 33)))
qqline(pca1$x)
这是我的数据:
数据= [2.48 104 4.25 219 0.682 0.302 1.09 0.586 90.7 344 13.8 1.17 305 2.8 79.7 3.18 109 0.932 562 0.958 1.87 0.59 114 391 13.5 1.41 208 2.37 166 3.42]
我现在想绘制95%置信区间来检查哪些数据点在外面.关于如何做到这一点的任何提示?
r ×8
ggplot2 ×2
function ×1
glm ×1
lattice ×1
linechart ×1
matlab ×1
mixed-models ×1
numpy ×1
plot ×1
python ×1
scipy ×1
statistics ×1
transparency ×1
trend ×1