m0_72013221 2024-03-08 15:50 采纳率: 50%
浏览 126

stata熵值法里 为什么显示sx1 not found 明明前面都没有问题😭

换了两个代码都显示not found 为什么会这样😭 但是前面都没有报错 在求权重的时候就开始报错了

img

  • 写回答

1条回答 默认 最新

  • 檀越@新空间 2024-03-08 15:55
    关注

    m0_72013221 下午好🌅🌅🌅
    本答案参考ChatGPT-3.5

    在Stata中执行熵值法时遇到sx1 not found错误,通常意味着变量sx1没有在当前的数据集中被定义或识别。根据您提供的代码片段,我注意到可能存在以下问题:

    1. 变量名拼写错误:确保在创建sx1变量的步骤中变量名正确无误,并且后续引用该变量的地方也保持一致。

    2. 变量未生成:在计算sx1之前,请确保已正确执行了所有必要的数据处理和变量生成步骤。特别是检查对sx系列变量(如sxi')的赋值是否包含了sx1

    3. 循环范围不匹配:在循环过程中,需要遍历正确的变量集合。例如,如果sx1是第1个指标变量,那么在forvalue循环中应确保包括sx1在内的所有变量都被正确迭代。

    针对这个问题,可以尝试以下解决方案:

    * 假设sxi'变量已经按预期方式生成
    
    * 检查并设置循环范围与实际变量数量相符
    local num_vars = wordcount("$all_var")  // 获取所有变量个数
    forvalues i = 1/`num_vars' {
        egen min_i'=min(sx`i')
        egen max_i'=max(sx`i')
        
        gen s`i'=(max_i'-sx`i')/(max_i'-min_i')
        replace s`i' = 0.0001 if s`i' == 0
        egen sumsi'=sum(sx`i')
        gen p`i'=sx`i'/sumsi'
    }
    
    * 如果有负向指标,则需额外处理
    foreach i in $neg_var {
        egen min_i'=min(sx`i')
        egen max_i'=max(sx`i')
        ...
    }
    

    请根据实际情况调整上述代码以匹配您的数据集和指标体系。

    评论

报告相同问题?

问题事件

  • 创建了问题 3月8日