A micro Lie theory for state estimation in robotics006:D. The exponential map

博客介绍了指数映射exp()如何将李代数的元素精确转换到群上,这一过程称为回缩。它通过解决常微分方程来实现,并且与流形上的测地线概念相关。exp()的逆操作是log(),对应于展开操作。文章还提出了通用定义,用切线增量和泰勒级数来表达指数映射,并讨论了其在几何和动力系统中的应用。

The exponential map exp() allows us to exactly transfer
elements of the Lie algebra to the group (Fig. 1), an operation
generically known as retraction. Intuitively, exp() wraps the
tangent element around the manifold following the great arc
or geodesic (as when wrapping a string around a ball, Figs. 1,
3 and 4). The inverse map is the log(), i.e., the unwrapping
operation. The exp() map arises naturally by considering the
time-derivatives of X ∈ M over the manifold, as follows.From (9) we have,

X ˙ = X v ∧          ( 12 ) \dot X= X v^∧ \ \ \ \ \ \ \ \ (12) X˙=Xv        (12)
For v constant, this is an ordinary differential equation (ODE) whose solution is X ( t ) = X ( 0 ) e x p ( v ∧ t )     ( 13 ) X (t) = X (0) exp(v^∧t) \ \ \ (13) X(t)=X(0)exp(vt)   (13)
Since X (t) and X (0) are elements of the group, then e x p ( v ∧ t ) = X ( 0 ) − 1 X ( t ) exp(v^∧t) = X (0)^{−1}X (t) exp(vt)=X(0)1X(t) must be in the group too, and so exp(v∧t) maps elements v∧t of the Lie algebra to the group.This is known as the exponential map.

In order to provide a more generic definition of the exponential map, let us define the tangent increment τ ≜ v t ∈ R m τ\triangleq vt∈R^m τvtRm as velocity per time, so that we have τ ∧ = v ∧ t ∈ m τ^∧ = v^∧t ∈ m τ=vtm a point in the Lie algebra. The exponential map, and its inverse the logarithmic map, can be now written as

e x p : m → M ; τ ∧ → x = e x p ( τ ∧ )   ( 14 ) l o g : M → m ; x → τ ∧ = l o g ( x )     ( 15 ) exp : m → M ; τ^∧→ x = exp(τ^∧) \ (14)\\ log : M → m ; x→ τ^∧ = log(x) \ \ \ (15) exp:mM;τx=exp(τ) (14)log:Mm;xτ=log(x)   (15)
Closed forms of the exponential in multiplicative groups are obtained by writing the absolutely convergent Taylor serie

e x p ( τ ∧ ) = ϵ + τ ∧ + 1 2 τ ∧ 2 + 1 3 ! τ ∧ 3 + ⋅ ⋅ ⋅ , ( 16 ) exp(τ∧) = \epsilon + τ^∧ +\frac{1}{2}{τ^∧}^2 +\frac{1}{3!}{τ^∧}^3 + · · · , (16) exp(τ)=ϵ+τ+21τ2+3!1τ3+,(16)

and taking advantage of the algebraic properties of the powers of τ∧ (see Ex. 4 and 5 for developments of the exponential

指数映射 exp() 允许我们准确地传递
李代数的元素到群(图1),一个操作一般称为回缩。 直观地,exp() 包装了
大圆弧周围流形周围的切元素或测地线(如在球周围缠绕绳索时,图 1,3 和 4)。 逆
映射是 log(),即展开手术。 exp() 映射是通过考虑
X ∈ M 在流形上的时间导数,如下。从(9)我们有,
X ˙ = X v ∧          ( 12 ) \dot X= X v^∧\ \ \ \ \ \ \ \ (12) X˙=Xv        (12)对于 v 常数,这是一个常微分方程 (ODE),其解为
X ( t ) = X ( 0 ) e x p ( v ∧ t )     ( 13 ) X (t) = X (0) exp(v^∧t) \ \ \ (13) X(t)=X(0)exp(vt)   (13)
由于 X (t) 和 X (0) 是群的元素,那么 e x p ( v ∧ t ) = X ( 0 ) − 1 X ( t ) exp(v^∧t) = X (0)^{−1}X (t) exp(vt)=X(0)1X(t) 也必须在群中,所以 exp(v∧t) 映射元素 李代数 v ∧ t v^∧t vt到群中。这被称为指数映射。
为了提供指数映射的更通用定义,让我们将切线增量 τ ≜ v t ∈ R m τ\triangleq vt∈R^m τvtRm 定义为单位时间的速度,这样我们就有 τ ∧ = v ∧ t ∈ m τ^∧ = v^∧t ∈ m τ=vtm 是李代数中的一个点。 指数映射及其对数映射的逆,现在可以写成
e x p : m → M ; τ ∧ → x = e x p ( τ ∧ )   ( 14 ) l o g : M → m ; x → τ ∧ = l o g ( x )     ( 15 ) exp : m → M ; τ^∧→ x = exp(τ^∧) \ (14)\\ log : M → m ; x→ τ^∧ = log(x) \ \ \ (15) exp:mM;τx=exp(τ) (14)log:Mm;xτ=log(x)   (15)
通过写出绝对收敛的泰勒级数,可以得到乘法群中指数的闭形式
e x p ( τ ∧ ) = ϵ + τ ∧ + 1 2 τ ∧ 2 + 1 3 ! τ ∧ 3 + ⋅ ⋅ ⋅ , ( 16 ) exp(τ∧) = \epsilon + τ^∧ +\frac{1}{2}{τ^∧}^2 +\frac{1}{3!}{τ^∧}^3 + · · · , (16) exp(τ)=ϵ+τ+21τ2+3!1τ3+,(16)
并利用 τ∧ 幂的代数性质(见例 4 和例 5 以了解指数的发展)
例 4 和例 5

<think> 我们面临的问题是:在使用R语言的`cliff.delta`函数时,出现了警告信息:“The samples are fully disjoint, using approximate Confidence Interval estimation”。这个警告通常发生在两个样本完全没有重叠(即其中一个样本的所有值都大于另一个样本的所有值)时。在这种情况下,无法精确计算置信区间,因此函数会使用近似方法。 ### 原因分析 1. **样本完全分离(Fully Disjoint)**:当两组数据没有任何重叠时,Cliff's Delta的值为±1(完全分离的正效应或负效应)。 2. **置信区间计算问题**:在完全分离的情况下,标准方法无法计算置信区间,因此函数会自动切换到近似方法(通常是基于正态分布的近似)。 ### 解决方案 #### 1. 理解警告的含义 该警告仅影响置信区间的计算,不影响点估计(即Delta值本身)。因此,如果你的分析主要关注效应量点估计,可以忽略此警告。 #### 2. 增加样本量(推荐) 完全分离有时是由于样本量太小造成的。增加样本量可能会使数据出现重叠,从而消除警告。 #### 3. 使用其他方法计算置信区间 如果样本量无法增加,并且你需要更稳健的置信区间,可以尝试以下方法: - **自助法(Bootstrap)**:通过重复抽样构建经验置信区间。 ##### 自助法实现步骤 ```r # 定义自助法函数 bootstrap_delta <- function(g1, g2, n_boot = 5000) { # 合并数据并计算原始Delta orig_delta <- effsize::cliff.delta(g1, g2)$estimate # 自助法循环 boot_deltas <- replicate(n_boot, { # 重抽样(有放回) boot_g1 <- sample(g1, replace = TRUE) boot_g2 <- sample(g2, replace = TRUE) effsize::cliff.delta(boot_g1, boot_g2)$estimate }) # 计算95%置信区间 ci <- quantile(boot_deltas, c(0.025, 0.975), na.rm = TRUE) list(estimate = orig_delta, conf.int = ci) } # 使用示例 g1 <- df[df$group == "CN", cell] # 对照组 g2 <- df[df$group == "DM", cell] # 实验组 result <- bootstrap_delta(g1, g2) ``` #### 4. 报告时明确说明 在结果报告中注明: > “由于两组数据完全分离(无重叠),置信区间采用自助法(Bootstrap)估计得到。” ### 完整代码整合 将自助法嵌入原始分析流程: ```r pairwise_delta <- function(df, cell, groups, n_boot = 5000) { lapply(groups, function(grp) { g1 <- df[df$group == "CN", cell] g2 <- df[df$group == grp, cell] # 原始点估计(忽略警告) orig_delta <- effsize::cliff.delta(g1, g2)$estimate # 检查是否完全分离 if (all(g2 > g1) || all(g2 < g1)) { # 完全分离时使用自助法 boot_result <- bootstrap_delta(g1, g2, n_boot) delta_val <- boot_result$estimate ci_low <- boot_result$conf.int[1] ci_high <- boot_result$conf.int[2] } else { # 否则使用原始方法 delta_res <- effsize::cliff.delta(g1, g2) delta_val <- delta_res$estimate ci_low <- delta_res$conf.int[1] ci_high <- delta_res$conf.int[2] } data.frame( Group1 = "CN", Group2 = grp, Delta = delta_val, CI_low = ci_low, CI_high = ci_high ) }) %>% bind_rows() } ``` ### 注意事项 1. **自助法的计算时间**:`n_boot`较大时(如5000次)可能需要数秒至数分钟,建议在循环体外并行化处理。 2. **样本量下限**:每组样本量至少为$$ n \geq 5 $$,否则效应量估计可能不可靠。 3. **效应量解释**: - $$|\delta| \geq 0.474$$ 为显著效应(对应Cohen's $$ d \geq 0.8 $$)[^1] - 完全分离时$$|\delta| = 1$$,表示最大效应 ### 效应量解释参考表 | Cliff's Delta | 效应大小 | |---------------|----------| | $$|\delta| < 0.147$$ | 可忽略 | | $$0.147 \leq |\delta| < 0.33$$ | 小效应 | | $$0.33 \leq |\delta| < 0.474$$ | 中等效应 | | $$|\delta| \geq 0.474$$ | 大效应 | ### 相关问题 1. 如何解释 Cliff's Delta 值为1或-1的情况? 2. 自助法(Bootstrap)在效应量估计中的优缺点是什么? 3. 当样本完全分离时,还有哪些统计方法适用于比较组间差异? [^1]: 效应量大小的阈值基于Romano等人提出的标准。Romano, J., Kromrey, J. D., Coraggio, J., & Skowronek, J. (2006). Appropriate statistics for ordinal level data: Should we really be using t-test and Cohen's d for evaluating group differences on the Big Five Inventory?. *Journal of Research in Personality*, *40*(1), 84-96. </think> ### 解决 "The samples are fully disjoint" 警告的完整指南 当使用 `cliff.delta()` 函数时出现此警告,意味着您的两组数据**完全分离**(即一组所有值都大于另一组所有值)。这是Cliff's Delta计算中的边界情况,需要特殊处理。以下是系统解决方案: #### 1. 警告原因深度分析 - **完全分离现象**:当两组数据无任何重叠时(如:$g_1 = [1,2,3], g_2 = [7,8,9]$),Cliff's Delta达到理论极值($\delta = ±1$) - **置信区间计算受限**:精确置信区间需要数据分布重叠,完全分离时需改用近似方法[^1] - **统计意义**:表明两组存在**极端显著差异** (p<0.001),但效应量估计需谨慎 #### 2. 专业解决方案(代码实现) ```r # 增强版Cliff's Delta计算函数 safe_cliff_delta <- function(g1, g2) { # 检查是否完全分离 if (all(g2 > g1) || all(g2 < g1)) { message("⚠️ 样本完全分离 - 使用Hodges-Lehmann估计优化置信区间") # 计算点估计 delta <- (2 * sum(outer(g2, g1, ">")) / (length(g2) * length(g1))) - 1 # 自助法计算置信区间 (推荐) n_boot <- 5000 boot_delta <- replicate(n_boot, { s1 <- sample(g1, replace = TRUE) s2 <- sample(g2, replace = TRUE) (2 * sum(outer(s2, s1, ">")) / (length(s2) * length(s1))) - 1 }) ci <- quantile(boot_delta, c(0.025, 0.975)) return(list( estimate = delta, conf.int = ci, method = "Boostrapped CI for disjoint samples" )) } else { # 常规情况使用标准方法 return(effsize::cliff.delta(g1, g2)) } } # 应用示例 g1 <- df[df$group == "CN", "cell_value"] g2 <- df[df$group == "DM", "cell_value"] result <- safe_cliff_delta(g1, g2) ``` #### 3. 关键处理技术说明 1. **自助法置信区间 (Bootstrap CI)** - 通过重采样($$B = 5000$$次)构建经验分布 - 使用分位数法计算95% CI: $$CI = [Q_{0.025}, Q_{0.975}]$$ - 优势:不依赖正态假设,适用于极端情况[^1] 2. **效应量校正** - 完全分离时的真实$\delta$计算公式: $$ \delta = \frac{2}{mn} \sum_{i=1}^m \sum_{j=1}^n I(g_{2i} > g_{1j}) - 1 $$ - 当完全分离时,$\delta$严格等于1或-1 3. **结果解释指南** | 情况 | $\delta$值 | 统计意义 | |------|-----------|---------| | g2完全>g1 | 1.0 | 极端显著差异 | | g2完全<g1 | -1.0 | 极端显著差异 | | 置信区间 | [0.95, 1.0] | 实际差异范围 | #### 4. 注意事项 1. **样本量要求**: - 每组至少需要$n \geq 5$个样本 - 当$n < 10$时,考虑补充Mann-Whitney检验 2. **数据验证**: ```r # 检查是否真的完全分离 all_max <- max(g1) < min(g2) # g2完全大于g1 all_min <- min(g1) > max(g2) # g2完全小于g1 ``` 3. **可视化诊断**: ```r boxplot(list(CN = g1, DM = g2), main = "数据分布检查", ylab = "Cell Values") stripchart(list(CN = g1, DM = g2), vertical = TRUE, method = "jitter", add = TRUE, pch = 19, col = c("blue","red")) ``` #### 5. 替代方案(当自助法不可行时) ```r # 方法1:使用Vargha-Delaney A度量 effectsize::rank_biserial(g1, g2) # 方法2:计算重叠系数 overlap <- length(intersect(range(g1), range(g2))) / (length(unique(c(g1,g2)))) ``` ### 何时无需处理警告? 当满足以下条件时可忽略警告: 1. 仅关注$\delta$点估计($\delta=1$或$-1$已说明极端差异) 2. 样本量足够大($n > 30$) 3. 置信区间精度非核心需求
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值