You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R矩阵乘法报non-conformable arguments错误:多维正态密度函数实现问题

R多维正态分布密度函数报错修复方案

核心错误点

  • 变量名引用错误:函数入参定义为x_one、x_two、x_three、x_four,但计算离均差时误用了未定义的x1、x2、x3、x4,属于基础变量名不匹配问题。
  • 均值取值不准确:给定的均值向量为c(5.0060022, 3.4280049, 1.4620007, 0.2459998),代码中使用近似值会引入不必要的计算误差。
  • 分母计算逻辑错误:多维正态分布密度公式的分母为$\sqrt{(2\pi)^4 \times det(\Sigma)}$,你误用了协方差矩阵逆的行列式,相当于分母多做了一次倒数运算,结果会完全偏离真实值。
  • 指数部分矩阵维度不匹配:指数项的标准形式为$-0.5 \times (x-\mu)^T \Sigma^{-1} (x-\mu)$,你额外生成了重复的离均差矩阵、错误添加转置和系数位置,导致矩阵乘法维度不兼容。

修复后可运行代码

# 若使用ginv需要先加载MASS包,协方差矩阵正定的情况下也可以直接用base的solve函数
library(MASS)
my_function <- function(x_one, x_two, x_three, x_four)
{
  # 构造协方差矩阵
  sigma1.pre <- c(0.15065114 , 0.13080115 ,  0.02084463 , 0.01309107 , 
                  0.13080115 , 0.17604529 ,  0.01603245 , 0.01221458 , 
                  0.02084463 , 0.01603245  , 0.02808260 , 0.00601568 , 
                  0.01309107 , 0.01221458 ,  0.00601568 , 0.01042365)
  sigma1 <- matrix(sigma1.pre, nrow=4, ncol= 4, byrow = TRUE)
  sigma1_inv <- ginv(sigma1)
  # 分母使用协方差矩阵的行列式,而非逆矩阵的行列式
  det_sigma1 <- det(sigma1)
  denom = sqrt( (2*pi)^4 * det_sigma1) 
  
  # 修正变量名和均值取值
  x_diff = c(x_one - 5.0060022, 
             x_two - 3.4280049, 
             x_three - 1.4620007, 
             x_four - 0.2459998)
  # 指数项按标准公式计算,无需重复构造矩阵
  exp_term = -0.5 * t(x_diff) %*% sigma1_inv %*% x_diff
  num = exp(exp_term)
  
  answer = as.numeric(num/denom)
  return(answer)
}

# 测试运行
my_function(1,2,3,4)

可选优化方案

如果不需要手动实现底层逻辑,可以直接调用mvtnorm包的dmvnorm函数,避免手动实现的维度、公式错误:

library(mvtnorm)
mu <- c(5.0060022, 3.4280049, 1.4620007, 0.2459998)
sigma <- matrix(c(0.15065114 , 0.13080115 ,  0.02084463 , 0.01309107 , 
                  0.13080115 , 0.17604529 ,  0.01603245 , 0.01221458 , 
                  0.02084463 , 0.01603245  , 0.02808260 , 0.00601568 , 
                  0.01309107 , 0.01221458 ,  0.00601568 , 0.01042365),
                nrow=4, byrow = T)
# 计算密度值
dmvnorm(c(1,2,3,4), mean = mu, sigma = sigma)

内容的提问来源于stack exchange,提问作者stats_noob

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 04:54:03