当我在 R 中运行分位数回归时,使用quantreg包,然后运行summary(quantregObject),我收到此错误消息:
base::backsolve(r, x, k = k, upper.tri = upper.tri, transpose = transpose, : 'backsolve' 中的奇异矩阵中的错误。对角线 [1] 中的第一个零
任何建议我怎么能解决这个问题?
我想获取Hive中表格的第一个四分位数的摘要数据.以下是获取每个四分位数中的最大视图数的查询:
SELECT NTILE(4) OVER (ORDER BY total_views) AS quartile, MAX(total_views)
FROM view_data
GROUP BY quartile
ORDER BY quartile;
Run Code Online (Sandbox Code Playgroud)
此查询是获取第一个四分位数中所有人的名称:
SELECT name, NTILE(4) OVER (ORDER BY total_views) AS quartile
FROM view_data
WHERE quartile = 1
Run Code Online (Sandbox Code Playgroud)
我为这两个查询都收到此错误:
Invalid table alias or column reference 'quartile'
Run Code Online (Sandbox Code Playgroud)
如何ntile在where条款或group by条款中引用结果?
我正在使用数据文件,里面的观察是随机值.在这种情况下,我不知道x的分布(我的观察).我正在使用函数密度来估计密度,因为我必须应用核估计.
T=density(datafile[,1],bw=sj,kernel="epanechnikov")
Run Code Online (Sandbox Code Playgroud)
在此之后我必须整合它,因为我正在寻找分位数(类似于VaR,95%).为此,我有两个选择:
ecdf()
quantile()
Run Code Online (Sandbox Code Playgroud)
现在我有分位数95的值,但这是内核估计的数据.
是否有一个函数可以用来知道原始数据的分位数95的值?
我注意到这是一个未知的分布,为此我想象一个非参数方法如牛顿,就像SAS中的那个 solve()
我使用quantregR 中的包来计算分位数回归模型。在模型中,因变量(Y)为NAS_DELAY,自变量(Xs)为SEANSON1TO4、SEANSON2TO4、SEANSON3TO4。
模型是:
NAS_DELAY=aSEANSON1TO4+bSEANSON2TO4+cSEANSON3TO4+d
Run Code Online (Sandbox Code Playgroud)
的SEANSON1TO4,SEANSON2TO4,SEANSON3TO4是虚拟变量,0或1。我用R计算表明,截距和其它回归系数,但结果
“rq.fit.br(x,y,tau=tau,....) 单一设计矩阵中的错误;此外:警告消息 1:in summary.rq(xi,....):278951 non-positivr菲斯”。
我不明白为什么。
"fit2<-summary(rq(NAS_DELAY ~SEASON1TO4+SEASON2TO4+SEASON3TO4,tau=c(0.1,0.2,0.3,0.4,0.5),data=fddata))
Error in base::backsolve(r, x, k = k, upper.tri = upper.tri, transpose = transpose, : singular matrix in 'backsolve'. First zero in diagonal [1]"
In addition: Warning messages:
1: In rq.fit.br(x, y, tau = tau, ...) : Solution may be nonunique
2: In rq.fit.br(x, y, tau = tau, ...) : Solution may …Run Code Online (Sandbox Code Playgroud) 如何在R Studio中的tapply()中嵌入一个分位数()?
鉴于:
tapply(data$x,data$y, quantile)
Run Code Online (Sandbox Code Playgroud)
这可行,但它提供标准的quin-tiles.我想选择自定义百分位数.如何在上面的脚本行中加入这样的内容(如下所示)?
quantile(data$x, c(0.1,.2,.8,0.9), na.rm=TRUE)
Run Code Online (Sandbox Code Playgroud)
当我尝试合并这些时,我收到错误消息"match.fun(FUN)... not a function"
有任何想法吗?谢谢,
我正在对气象数据进行极值分析,以准确计算以 mm/d 为单位的可用降水数据。我正在使用阈值过量方法来估计具有最大似然法的广义帕累托分布的参数。
目的是计算日降水量的几个回归水平(即 2、5、10、20、50、100 年事件)。
虽然 R 代码工作正常,但我想知道为什么在根据具有不同包的拟合 GPD 的分位数计算回报水平时,我得到明显不同的结果。尽管每个包中 GPD 的估计参数几乎相同,但分位数差异很大。
我使用的软件包是:ismev、extRemes、evir 和 POT。
我猜对 GPD 参数的不同估计是由于不同的计算程序,但我不明白为什么分位数的计算会因不同的包而有很大差异。
虽然 lmom、evir 和 POT 返回相同的分位数值,但从 extRemes 包导出的返回期与其他结果不同。
# packages
library(ismev)
library(extRemes)
library(evir)
library(POT)
library(lmom)
th <- 50
# sample data:
potvalues <- c(
58.5,44.2,49.6,59.3,48.3,60.9,94.5,47.1,45.3,57.6,48.2,46.2,44.2,50.6,42.1,52.7,80.9,
58.5,51.3,48.4,51.7,71.9,60.1,64.4,43.5,55.5,49.3,58.2,47.5,43.7,45.2,52.8,42.2,46.4,
96.1,47.5,50.1,42.4,60.9,72.6,51.6,59.4,80.5,63.7,59.9,45.0,66.7,47.6,53.3,43.1,51.0,
46.2,53.6,59.8,51.7,46.7,42.6,44.5,45.0,50.0,44.0,89.9,44.2,47.8,53.3,43.0,55.7,44.6,
44.6,54.9,45.1,43.9,78.7,45.5,64.0,42.7,47.4,57.0,105.4,64.3,43.2,50.4,80.2,49.9,71.6,
47.4,44.1,47.6,55.2,44.4,78.6,50.8,42.4,47.1,43.5,51.4)
#------------------------------------------------------------------------------------------#
# MLE Fitting of GPD - package extRemes
# fit gpd
pot.ext <- fevd(potvalues, method = "MLE", type="GP", threshold=th)
# return levels:
rl.extremes <- return.level(pot.ext, conf = 0.05,
return.period= c(2,5,10,20,50,100))
rl.extremes …Run Code Online (Sandbox Code Playgroud) 我在Python中找到众所周知的概率分布的分位数函数时遇到了问题,它们是否存在?特别是,是否存在反正态分布函数?我在Numpy或Scipy都找不到任何东西.
require(ggplot2)
require(cowplot)
d = iris
ggplot2::ggplot(d, aes(factor(0), Sepal.Length)) +
geom_violin(fill="black", alpha=0.2, draw_quantiles = c(0.25, 0.5, 0.75)
, colour = "red", size = 1.5) +
stat_boxplot(geom ='errorbar', width = 0.1)+
geom_boxplot(width = 0.2)+
facet_grid(. ~ Species, scales = "free_x") +
xlab("") +
ylab (expression(paste("Value"))) +
coord_cartesian(ylim = c(3.5,9.5)) +
scale_y_continuous(breaks = seq(4, 9, 1)) +
theme(axis.text.x=element_blank(),
axis.text.y = element_text(size = rel(1.5)),
axis.ticks.x = element_blank(),
strip.background=element_rect(fill="black"),
strip.text=element_text(color="white", face="bold"),
legend.position = "none") +
background_grid(major = "xy", minor = "none")
Run Code Online (Sandbox Code Playgroud)
据我所知,箱形图中的方框末端分别代表25%和75%的分位数,中位数= 50%.因此,他们应等于其通过绘制的0.25/0.5/0.75分位数geom_violin的 …
我的数据集包含不同物种的多个观测值.每个物种的观测数量都不同.寻找R中的快速方法来计算每个物种的给定变量的前10%值的平均值.
我想出了如何获得给定数量的值(即前20个值).
clim6 <-setDT(range)[order(species, clim6),.SD[1:20],by=species]
write.csv(Bioclimlo6, file = "clim6.csv")
Run Code Online (Sandbox Code Playgroud)
我也知道有一种方法可以修剪数据集以生成剩余数据集的平均值,但我不确定如何仅修剪底部的90%.
mean(x, trim = 0, na.rm = FALSE)
Run Code Online (Sandbox Code Playgroud) 我需要一个像xtileStata 中的函数,给定一个向量,它返回每个 obs 属于哪个分位数。所以如果函数定义为
function xtile(vector; q= 4) #q = 4 by default returns quartiles
*** returns a vector with the same size as "vector", indicating which quantile each obs belongs to.
end
Run Code Online (Sandbox Code Playgroud)
我想在以下方面使用它:
@pipe df |> transform(:height => xtile => :quantiles)
Run Code Online (Sandbox Code Playgroud)
我知道Stella.jl提供了这样的功能。但是我无法安装该软件包,现在我想知道是否还有其他软件包。或者我可以自己实现它。
quantile ×10
r ×7
quantreg ×2
apply ×1
boxplot ×1
console ×1
data.table ×1
ggplot2 ×1
hadoop ×1
hive ×1
hiveql ×1
julia ×1
kernel ×1
mean ×1
mle ×1
numpy ×1
package ×1
percentile ×1
python ×1
regression ×1
rstudio ×1
scipy ×1
statistics ×1
violin-plot ×1