我有一个两列数据帧的基本图(x ="Periods"和y ="Range").
library (ggplot2)
qplot (Periods, Range, data=twocoltest, color=Periods, size = 3,) + geom_jitter(position=position_jitter(width=0.2))
Run Code Online (Sandbox Code Playgroud)
我试图在下面的每个时期添加一条水平线,该水平线占该时期所有观测值的90%.(它不必是水平线,每个时期的任何视觉指示就足够了).
任何帮助将不胜感激.
我想计算给定CDF 的逆高斯分布的参数mu和lambda .
通过"给定CDF",我的意思是我已经为数据Ie提供了数据和(估计的)分位数
Quantile - Value
0.01 - 10
0.5 - 12
0.7 - 13
Run Code Online (Sandbox Code Playgroud)
现在我想找出这个数据的逆高斯分布,这样我就可以根据我的分布查找值11的分位数.
我怎样才能找到mu和lambda的值?
我能想到的唯一解决方案是使用梯度下降来找到最好的mu和lambda,使用RMSE作为误差测量.
是不是有更好的解决方案?
评论:Matlab的MLE算法不是一个选项,因为它不使用分位数据.
我想替换我的相对较大的R数据集中的所有值,这些数据集的值分别高于95和低于第5百分位数,并且分别具有那些百分位数值.我的目标是避免完全从数据中简单地裁剪这些异常值.
任何建议将不胜感激,我找不到任何其他地方如何做到这一点的信息.
我正在尝试将我在matlab中的一些代码复制到python中.我发现matlab中的分位数函数在python中没有"完全"对应的.我发现最接近的是python的mquantiles.例如
对于matlab:
quantile( [ 8.60789925e-05, 1.98989354e-05 , 1.68308882e-04, 1.69379370e-04], 0.8)
Run Code Online (Sandbox Code Playgroud)
得到: 0.00016958
对于python:
scipy.stats.mstats.mquantiles( [8.60789925e-05, 1.98989354e-05, 1.68308882e-04, 1.69379370e-04], 0.8)
Run Code Online (Sandbox Code Playgroud)
给 0.00016912
有谁知道如何完全复制matlab的分位数?非常感谢.
在Stata中,是否可以绘制分位数回归线?我知道标准的OLS回归线可以添加到散点图中,但我不清楚如何添加其他类型的回归线.
如果不可能,可以绘制我在mx + b格式中指定的行吗?然后我可以从分位数回归输出中获取斜率和截距项并手动绘制它们.
谢谢您的帮助!
我正在使用该quantreg包在R中运行以下分位数回归:
bank <-rq(gekX~laggekVIXclose+laggekliquidityspread+lagdiffthreeMTBILL+
lagdiffslopeyieldcurve+lagdiffcreditspread+laggekSPret, tau=0.99)
Run Code Online (Sandbox Code Playgroud)
并通过提取系数和摘要统计
bank$coefficients
summary(bank)
Run Code Online (Sandbox Code Playgroud)
我得到的结果是
Call: rq(formula = gekX ~ laggekVIXclose + laggekliquidityspread +
lagdiffthreeMTBILL + lagdiffslopeyieldcurve + lagdiffcreditspread +
laggekSPret, tau = 0.99)
tau: [1] 0.99
Coefficients:
Value Std. Error t value Pr(>|t|)
(Intercept) -0.03005 0.01018 -2.95124 0.00319
laggekVIXclose 0.00471 0.00069 6.81515 0.00000
laggekliquidityspread -0.01295 0.01619 -0.79976 0.42392
lagdiffthreeMTBILL -0.12273 0.12016 -1.02136 0.30717
lagdiffslopeyieldcurve -0.13100 0.06457 -2.02876 0.04258
lagdiffcreditspread -0.21198 0.15659 -1.35377 0.17592
laggekSPret -0.01205 0.46559 -0.02588 0.97936
Run Code Online (Sandbox Code Playgroud)
但是,我想知道R ^ 2 /调整后的R ^ …
q <- quantile(faithful$eruptions)
> q
0% 25% 50% 75% 100%
1.60000 2.16275 4.00000 4.45425 5.10000
Run Code Online (Sandbox Code Playgroud)
我得到以下结果,数据集在R中提供.
head(faithful)
eruptions waiting
1 3.600 79
2 1.800 54
3 3.333 74
4 2.283 62
5 4.533 85
6 2.883 55
Run Code Online (Sandbox Code Playgroud)
我想要一个包含数据的数据帧和一个额外的列,用于指出每个观察所属的分位数.例如,最终数据集应如下所示
eruptions waiting Quartile
1 3.600 79 Q1
2 1.800 54 Q2
3 3.333 74
4 2.283 62
5 4.533 85
6 2.883 55
Run Code Online (Sandbox Code Playgroud)
如何才能做到这一点?
我有一个data.frame,我想在其上应用分位数,使数据看起来更简单:
> head(Quartile)
GSM1321374 GSM1321375 GSM1321376 GSM1321377 GSM1321378 GSM1321379
1415670_at 11.203302 11.374616 10.876187 11.23639 11.02051 10.926481
1415671_at 11.196427 11.492769 11.493717 11.01683 11.15016 11.576188
1415672_at 11.550974 11.267559 11.800991 11.57551 10.93359 11.222779
1415673_at 11.293390 10.978280 11.367316 10.45135 10.35822 10.234964
1415674_a_at 9.254073 10.572670 9.361991 11.26998 10.21125 10.245857
1415675_at 9.922985 9.228195 9.798156 10.02844 10.19928 9.749947
Run Code Online (Sandbox Code Playgroud)
我应用了以下功能,它完成了这项工作.
quantfun <- function(x) as.integer(cut(x, quantile(x, probs=0:4/4), include.lowest=TRUE))
a <- apply(Quartile,1,quantfun)
b <- t(a)
colnames(b) <- colnames(Quartile)
Run Code Online (Sandbox Code Playgroud)
输出是:
> head(b)
GSM1321374 GSM1321375 GSM1321376 GSM1321377 GSM1321378 GSM1321379
1415670_at 3 4 …Run Code Online (Sandbox Code Playgroud) 我想将中值样条和相应的置信区间带添加到ggplot2散点图中.我正在使用'quantreg'包,更具体地说是rqss函数(Additive Quantile Regression Smoothing).
在ggplot2我能够添加中值样条曲线,但不是置信区间带:
fig = ggplot(dd, aes(y = MeanEst, x = N, colour = factor(polarization)))
fig + stat_quantile(quantiles=0.5, formula = y ~ qss(x), method = "rqss") +
geom_point()
Run Code Online (Sandbox Code Playgroud)
该quantreg-package本身自带的绘图功能; plot.rqss.我可以在哪里添加置信区间(bands=TRUE):
plot(1, type="n", xlab="", ylab="", xlim=c(2, 12), ylim=c(-3, 0)) # empty plot
plotfigs = function(df) {
rqss_model = rqss(df$MeanEst ~ qss(df$N))
plot(rqss_model, bands=TRUE, add=TRUE, rug=FALSE, jit=FALSE)
return(NULL)
}
figures = lapply(split(dd, as.factor(dd$polarization)), plotfigs)
Run Code Online (Sandbox Code Playgroud)
然而,quantreg-package …
我对 Pandas 很陌生,我正在尝试做以下事情:
我有两个数据框comms,arts看起来像这样(除了它们与其他列的广告更长的事实)
通讯:
ID commScore
10 5
10 3
10 -1
11 0
11 2
12 9
13 -2
13 -1
13 1
13 4
Run Code Online (Sandbox Code Playgroud)
艺术:
ID commNumber
10 3
11 2
12 1
13 4
Run Code Online (Sandbox Code Playgroud)
我需要comms按 ID 进行分组,然后保存(显然在正确的 ID 行中)每个 ID 的 commScore 分布的arts四分位数范围 ( IQR )。
我已经尝试过使用groupby,agg和map ,但由于我的概念pandas非常有限,所以我无法做我正在寻找的事情。
有没有人有办法解决吗?
谢谢
安德里亚