如何在现有的相关矩阵上运行主成分分析(PCA),然后进行回归?

我目前已经计算了调查应答者之间的成对相关性,并将其存储在一个数据框中。它的样子如下:

          person_1 person_2 person_3 person_1.  0        1.5     1.8 person_2.  1.5       0      2.2 person_3.  1.8      2.2.      0

现在我想运行PCA分析来找出每个响应的载荷。我有两个问题:

  1. 我应该使用哪个函数直接使用相关矩阵计算主成分?
  2. 顺便提一下。我想然后对每个应答者的载荷进行回归,基于原始数据框中的人员调查评分。有什么方法可以将“score”列合并回函数中来运行回归吗?或者有其他方法来进行回归/预测吗?

原始数据框是一个文本数据框,看起来像这样。我然后运行句子之间的词移动距离来得出相关矩阵。

          text.                      scoreperson_1. I like working at Apple       2person_2  the culture is great          -2person_3. pandemic hits                 5

谢谢!


回答:

由于你有一个矩阵,有时R语言中用于PCA的大多数已知算法在容忍度上会有问题,因此会返回错误。我建议使用eigen()函数,它复制了PCA的本质。以下是代码:

#Data#Matrixmm <- structure(c(0, 1.5, 1.8, 1.5, 0, 2.2, 1.8, 2.2, 0), .Dim = c(3L, 3L), .Dimnames = list(c("person_1", "person_2", "person_3"),     c("person_1", "person_2", "person_3")))#Scoresdf1 <- structure(list(text. = c("I like working at Apple", "the culture is great", "pandemic hits"), score = c(2L, -2L, 5L)), row.names = c(NA, -3L), class = "data.frame")

PCA的代码如下:

#PCAmyPCA <- eigen(mm)#Squares of sd computed by princompmyPCA$values

输出:

[1]  3.681925 -1.437762 -2.244163

为了获取载荷,我们使用这个:

#LoadingsmyPCA$vectors

输出:

          [,1]       [,2]       [,3][1,] -0.5360029  0.8195308 -0.2026578[2,] -0.5831254 -0.5329938 -0.6130925[3,] -0.6104635 -0.2104444  0.7635754

利用前面的输出,我们创建一个用于回归的数据框:

#Format loadings Vectors <- data.frame(myPCA$vectors)names(Vectors) <- colnames(mm)#Prepare to regression#Create datamydf <- cbind(df1[,c('score'),drop=F],Vectors)

输出:

  score   person_1   person_2   person_31     2 -0.5360029  0.8195308 -0.20265782    -2 -0.5831254 -0.5329938 -0.61309253     5 -0.6104635 -0.2104444  0.7635754

最后,回归的代码如下:

#Build modelslm(score~person_1,data=mydf)lm(score~person_2,data=mydf)lm(score~person_3,data=mydf)

最后的模型可以保存到新对象中,如果你想的话。一个例子是:

m1 <- lm(score~person_1,data=mydf)summary(m1)

输出:

Call:lm(formula = score ~ person_1, data = mydf)Residuals:     1      2      3  1.411 -3.842  2.431 Coefficients:            Estimate Std. Error t value Pr(>|t|)(Intercept)   -13.66      51.60  -0.265    0.835person_1      -26.58      89.37  -0.297    0.816Residual standard error: 4.76 on 1 degrees of freedomMultiple R-squared:  0.08127,   Adjusted R-squared:  -0.8375 F-statistic: 0.08846 on 1 and 1 DF,  p-value: 0.816

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注