r - 修复 eigen() 或 svd() 的特征向量符号
问题描述
有没有办法修复由 eigen 或 svd 返回的特征向量的符号?princomp() 有一个 fix_sign 参数,当设置为 TRUE 时,强制每个特征向量列的第一个元素为正。eigen 或 svd 有类似的东西吗?
eigen 和 svd 是首选,因为我想直接使用 X'X,而不需要缩放、居中等。
我知道可以通过将 X'X 指定为 princomp 的 covmat 参数来复制这种效果,但这有点笨拙。
set.seed(123)
X <- data.frame(
x1 = arima.sim(list(ar = 0.5), n = 100),
x2 = arima.sim(list(ar = 0.5), n = 100),
x3 = arima.sim(list(ar = 0.5), n = 100)
) |> as.matrix()
eigen(t(X) %*% X)$vectors
svd(t(X) %*% X)
# This below approach works, but is a little unwieldy
princomp(covmat = t(X) %*% X, fix_sign = TRUE)
解决方案
推荐阅读
- java - 安装时打开的 Web 查看 Android 应用程序显示“应用程序停止工作”
- reactjs - 可以在单个 TextInput 中保存多个值吗?
- javascript - 在匹配或替换时排除某些上下文
- python - 无法使用 Python 连接简单的国际空间站 api
- java - 为什么 DEFAULT_NUM_DIRECT_ARENA 派生自 PlatformDependent.maxDirectMemory()?
- json - 在单个请求中发送多种内容类型
- react-native - 无需按下即可调用按钮操作
- swift - 如何从视频 URL 获取视频的 PHAsset?
- django - 如何从 django 中的对象中删除条目
- javascript - 使用 jquery.validation.min.js 进行远程验证