【问题标题】:Find closest comparables using R使用 R 查找最接近的可比对象
【发布时间】:2015-07-29 16:11:04
【问题描述】:

我正在寻找一种方法来使用 R 找到与主题属性最接近的可比房地产销售。我需要输出包含不同变量之间的距离。

我尝试过使用dist 函数,但它会产生一个输出,比较矩阵中的所有行。理想情况下,我想将单个主题与销售列表与按最接近匹配排序的输出与列出的每个变量的距离进行比较。

示例数据;

销售

parcel  square_feet age quality 

R100          2500   10       4
R200          1800   15       3
R300          2200    8       5

主题

R400          1900   14       4

理想情况下我想输出这样的东西

parcel  sq_ft_dist age_dist  qual_dist

R200          100    1       1
R300          300    6       1
R100          600    4       0

编辑 我正在寻找包裹之间的欧几里得距离。

编辑2 为了澄清我的问题,我可以使用 dist 函数获得每行之间的欧几里得距离。它为矩阵中的每一对返回一个值。太好了,但这超出了我的需要,对于大数据集,输出矩阵可能会变得非常大。我只需要主题和其他行之间的距离。我想我可以从dist 的输出中提取我感兴趣的距离,然后手动计算变量之间的距离。我在问,希望有一个 R 函数已经可以做到这一点。

【问题讨论】:

  • 您似乎有三个距离(平方英尺、年龄和质量)。您在订购时如何结合这三个距离?
  • 是的,除非您定义它,否则您不能按“最近”排序。
  • 对不起,我的意思是欧几里得距离度量,就像 dist() 使用的一样。

标签: r


【解决方案1】:

我认为统计匹配将有助于这项任务。也许马氏距离或倾向得分匹配。这将帮助您避免评论者指出的问题,即您必须找到一种方法来组合您的三个欧几里得距离。查看包 MatchIt:

http://r.iq.harvard.edu/docs/matchit/2.4-20/matchit.pdf

对不起,伪答案;我没有足够的代表发表评论:/

【讨论】:

    【解决方案2】:

    也许dplyr 可以为您提供帮助。我将您的包裹 R400 添加为数据框中的最后一个条目 (df)

    library(dplyr)
    df <- df %>%
      group_by(parcel) %>%
      summarise(sqftdist = df[4,2]-square_feet, 
                agedist =  df[4,3]-age, 
                qualdist = df[4,4]-quality)
    
    > df
    Source: local data frame [4 x 4]
    
      parcel sqftdist agedist qualdist
    1   R100    -1100       4        0
    2   R200     -400      -1        1
    3   R300     -800       6       -1
    4   R400        0       0        0
    

    这是数据框:

    > dput(df)
    structure(list(parcel = structure(1:4, .Label = c("R100", "R200", 
    "R300", "R400"), class = "factor"), sqftdist = c(-1100L, -400L, 
    -800L, 0L), agedist = c(4L, -1L, 6L, 0L), qualdist = c(0L, 1L, 
    -1L, 0L)), .Names = c("parcel", "sqftdist", "agedist", "qualdist"
    ), row.names = c(NA, -4L), class = c("tbl_df", "tbl", "data.frame"
    ), drop = TRUE)
    

    【讨论】:

      【解决方案3】:

      如果它可以帮助其他人,我从flexclust 包中找到了一个完全符合我要求的函数dist2。 它以与dist 相同的方式计算距离,但不是将每个观察值配对到单个矩阵中,而是给它第二个向量或矩阵以与第一个进行比较。
      阅读它here

      【讨论】:

        猜你喜欢
        • 2022-08-11
        • 1970-01-01
        • 2016-05-02
        • 2015-12-13
        • 2021-12-19
        • 2019-04-02
        • 2019-11-02
        • 2019-12-16
        • 1970-01-01
        相关资源
        最近更新 更多