创建 1 步转换矩阵,找到某人移动到特定城市的概率

Creating 1 step transition matrix, find probability that someone moves to a particular city

我正在寻找一种方法来找到具有某人移动概率的转换矩阵(在 R 中)。这是我的 df 的样子:

    City_year1         City_year2
   <fct>               <fct>  
 1 Alphen aan den Rijn NA     
 2 Tynaarlo            NA     
 3 Eindhoven           NA     
 4 Emmen               Emmen  
 5 Emmen               Emmen  
 6 Schagen             Schagen
 7 Bergen              NA     
 8 Schagen             Schagen
 9 Schagen             Schagen
10 Amsterdam           Rotterdam      

# .... with 200.000 more rows

我如何根据此 df 中可用的数据轻松创建一个转移矩阵,其中包含某个人在第 1 年从阿姆斯特丹搬到第 2 年鹿特丹的概率。额外信息:第 1 年的唯一值的数量不一定等于第 2 年的#unique 值。我尝试使用马尔可夫函数,但没有成功。

希望有人能帮帮我!

table(df) 将为您提供一个转换计数矩阵,您可以使用 prop.table:

将这些计数转换为概率(比例)
prop.table(table(df), margin = 1)

margin = 1 表示行中的概率总和为 1。

使用问题中的原始数据:

df =     read.table(text = 'City_year1         City_year2
  1 Alphen_aan_den_Rijn NA     
2 Tynaarlo            NA     
3 Eindhoven           NA     
4 Emmen               Emmen  
5 Emmen               Emmen  
6 Schagen             Schagen
7 Bergen              NA     
8 Schagen             Schagen
9 Schagen             Schagen
10 Amsterdam           Rotterdam', header = T)

result = prop.table(table(df), margin = 1)
result
# City_year2
# City_year1            Emmen Rotterdam Schagen
# Alphen_aan_den_Rijn                        
# Amsterdam               0         1       0
# Bergen                                     
# Eindhoven                                  
# Emmen                   1         0       0
# Schagen                 0         0       1
# Tynaarlo                                   

unclass(result)
# City_year2
# City_year1            Emmen Rotterdam Schagen
# Alphen_aan_den_Rijn   NaN       NaN     NaN
# Amsterdam               0         1       0
# Bergen                NaN       NaN     NaN
# Eindhoven             NaN       NaN     NaN
# Emmen                   1         0       0
# Schagen                 0         0       1
# Tynaarlo              NaN       NaN     NaN