void DEA::CalculateEfficiency() { for (int i = 0; i < mNumObservations; i++) { double num = 0.0; double den = 0.0; for (int j = 0; j < mNumObservations; j++) { double sumInputs = 0.0; double sumOutputs = 0.0; for (int k = 0; k < mNumInputs; k++) { sumInputs += mInputs[k][j]; } for (int k = 0; k < mNumOutputs; k++) { sumOutputs += mOutputs[k][j]; } double dist = 0.0; for (int k = 0; k < mNumInputs; k++) { dist += pow(mInputs[k][i] - mInputs[k][j], 2); } for (int k = 0; k < mNumOutputs; k++) { dist += pow(mOutputs[k][i] - mOutputs[k][j], 2); } if (dist > 0.0) { double eff = sumOutputs / sumInputs; double w = dist / (sumInputs * sumInputs + sumOutputs * sumOutputs); num += eff * w; den += w; } } mEfficiency[i] = num / den; } }采用什么方式计算得?
时间: 2024-02-14 08:36:13 浏览: 67
这段代码实现的是数据包络分析(Data Envelopment Analysis, DEA)中的效率计算方法,具体是采用了基于距离的C2R模型(Charnes, Cooper, and Rhodes model)。其中,对于每个被评估的单位i,通过计算与其他单位j之间的输入和输出距离,来评估单位i的效率。具体的效率计算方法是:对于每个单位i,计算其与其他单位j之间的距离,如果距离大于0,则计算出单位j的效率eff_j=sumOutputs_j/sumInputs_j,以及单位i和j之间的权重w_j=dist_j/(sumInputs_j^2+sumOutputs_j^2),最终计算单位i的效率为eff_i=sum(w_j*eff_j)/sum(w_j)。其中,sumInputs_j和sumOutputs_j分别表示单位j的输入总量和输出总量,dist_j表示单位i和j之间的输入输出距离。
阅读全文
相关推荐

















