Koasde 2021-10-14 09:58 采纳率: 100%
浏览 148
已结题

R语言 复现公式 order statistic

img

想用R语言复现图中公式,输入应该是某些因子的多列1到N的排序顺序,输出应该是基于这些排序通过这个公式计算后的最终排序结果

目前没有思路,希望大家提提建议

  • 写回答

2条回答 默认 最新

  • Kappuccinno 2021-10-15 09:27
    关注
    jiecheng<-function(n){
      init=1
      for (each in 1:n){
        init=init*each
      }
      return (init)
    }#上面这个是阶乘的函数
    Q_cal<-function(vec){#对任意由rank构成的样本排列向量的Q值函数
      n<-length(vec)
      V_vec<-rep(0,n)#先构造一个全0的长度为n的全零V向量,之后填充
      for (k in 1:n){
        sumnum=0#连加号的起点
        for (i in 1:k){#对连加号里的i在1-k上进行遍历
          first<-vec[i]*(-1)^(i-1)/jiecheng(i)#首先是排除V(k-i),这里的vec[i]就是之前我们讨论的r的值,后续可以再修改
          if (i!=k){
            first<-first*V_vec[k-i]#如果i不是k,那么V(k-i)不为V(0)
          }#如果是k则跳过,因为V(0)=1,直接用first即可
          sumnum<-sumnum+first#逐次累加first
        }
        V_vec[k]<-sumnum#把sumnum赋给V_vec第k个值,继续直至算到n
      }
      Q<-jiecheng(n)*V_vec[n]#最后用n!乘以V(n)即可
      return (Q)
    }
    try_csv<-read.csv("抽样.csv")#用你的那个样本
    #先把第一列(sample)去掉,然后转置,这是因为dataframe的行无法
    #变成向量(因为编写的Q_cal需要对每一个样本的行向量进行计算),
    #所以变成列
    rank_part<-t(try_csv[-1])
    sample<-ncol(rank_part)#样本数量
    vec_Q<-rep(0,sample)
    for (each in 1:sample){
      vec_Q[each]<-Q_cal(rank_part[,each])#累次计算每一个样本的Q值
    }
    print(vec_Q)#打印Q向量
    try_csv$Q=vec_Q
    

    我用的是你私聊给我发的那个数据模板

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 10月23日
  • 已采纳回答 10月15日
  • 赞助了问题酬金 10月14日
  • 创建了问题 10月14日

悬赏问题

  • ¥20 关于#c++#的问题:水果店管理系统
  • ¥30 dbLinq最新版linq sqlite
  • ¥20 对D盘进行分盘之前没有将visual studio2022卸载掉,现在该如何下载回来
  • ¥15 完成虚拟机环境配置,还有安装kettle
  • ¥15 2024年全国大学生数据分析大赛A题:直播带货与电商产品的大数据分析 问题5. 请设计一份优惠券的投放策略,需要考虑优惠券的数量、优惠券的金额、投放时间段和投放商品种类等因素。求具体的python代码
  • ¥15 有人会搭建生鲜配送自营+平台的管理系统吗
  • ¥15 用matlab写代码
  • ¥30 motoradmin系统的多对多配置
  • ¥15 求组态王串口自定义通信配置方法或代码?
  • ¥15 实验 :UML2.0 结构建模