日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

今日代码(200714)--主客观求指标权重及求城市得分

發(fā)布時(shí)間:2023/12/19 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 今日代码(200714)--主客观求指标权重及求城市得分 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

代碼記錄


主客觀求指標(biāo)權(quán)重及求城市得分


前言

有22個(gè)指標(biāo)和71個(gè)城市的10年數(shù)據(jù),現(xiàn)在利用主成分分析法求出客觀權(quán)重,并結(jié)合主管權(quán)重得出總權(quán)重,最后利用權(quán)重與標(biāo)準(zhǔn)化數(shù)值求出10年的得分。


前期準(zhǔn)備


設(shè)置工作路徑,讀取數(shù)據(jù)

workL = "C:/Users/goatbishop/Desktop/data" setwd(workL) getwd()library(magrittr)data <- read.csv("data0710.csv", stringsAsFactors = F) mendW <- read.table("weight2.txt") %>% c() %>% unlist() mendW <- mendW/sum(mendW)

方法區(qū)


myStand是計(jì)算權(quán)重用的正向指標(biāo)標(biāo)準(zhǔn)化化, downStand是計(jì)算權(quán)重用的負(fù)向指標(biāo)的標(biāo)準(zhǔn)化,upStand2是計(jì)算用的正指標(biāo)標(biāo)準(zhǔn)化方法,upStand2是計(jì)算用的負(fù)指標(biāo)標(biāo)準(zhǔn)化方法, weightDemo是提取權(quán)重,相當(dāng)于提取前10個(gè)主成分,再進(jìn)行計(jì)算,這里沒有依據(jù)特征值大小或者累計(jì)貢獻(xiàn)率提取主成分?jǐn)?shù),僅僅是較為隨意的選取前10個(gè)主成分,請注意排查錯(cuò)誤!

####方法區(qū)#### myStand <- function(x) {newx = (x-mean(x))/sd(x)return(newx) }downStand <- function(x) {newx = myStand(-x)return(newx) }upStand2 <- function(x) {newx = (x-min(x) + 0.01)/(max(x)-min(x))return(newx) }downStand2 <- function(x) {newx = (max(x)-x + 0.01)/(max(x)-min(x))return(newx) }weightDemo <- function(x) {#這個(gè)問題以后再解決R <- (t(x) %*% x)/ dim(x)[1]e <- eigen(R, symmetric=T)pcMa <- abs(e$vectors)sqrtValue <- e$values^(0.5)pcVa <- e$values[1:10]/sum(e$values[1:10])#print(pcVa)weightTemp <- t(t(pcMa) / sqrtValue)[, 1:10]weight <- weightTemp %*% pcVaweight <- weight/sum(weight)return(weight) }

求權(quán)重以及得分


構(gòu)造權(quán)重和得分矩陣,并求得權(quán)重和得分

#構(gòu)造權(quán)重矩陣 weight <- matrix(0 , ncol = 10, nrow = 22) colnames(weight) <- c(2018:2009)weightObj <- matrix(0 , ncol = 10, nrow = 22) colnames(weightObj) <- c(2018:2009)#構(gòu)造得分矩陣 score <- matrix(0 , ncol = 10, nrow = 71) colnames(score) <- c(2018:2009)count = 0 for (y in c(2018:2009)) {count = count + 1tempdata <- subset(data, year == y)tempdata = tempdata[, -c(1:3)]tempData_up <- apply(tempdata[, -c(7, 10, 12, 17, 18)], 2, myStand)#正向tempData_down <- apply(tempdata[, c(7, 10, 12, 17, 18)], 2, downStand)#負(fù)向newData <- cbind(tempData_up, tempData_down)tempData_up2 <- apply(tempdata[, -c(7, 10, 12, 17, 18)], 2, upStand2 )tempData_down2 <- apply(tempdata[, c(7, 10, 12, 17, 18)], 2, downStand2)newData2 <- cbind(tempData_up2, tempData_down2)## 計(jì)算權(quán)重w <- weightDemo(newData)#print(w)wave <- (w + mendW)/2#print(wave)#列中的所有行加總weightObj[, count] <- wweight[, count] <- wave#print(wave)##計(jì)算得分s <- newData2 %*% wavescore[, count] <- s }rownames(weightObj) <- colnames(newData) rownames(weight) <- colnames(newData) rownames(score) <- data[c(1:71), "city"]

寫出數(shù)據(jù)


write.csv(weight, "weightP.csv") write.csv(weightObj, "weightObj.csv") write.csv(score, "scoreP.csv")

總結(jié)

以上是生活随笔為你收集整理的今日代码(200714)--主客观求指标权重及求城市得分的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。