• Skip to primary navigation
  • Skip to main content
  • Skip to primary sidebar

Boolibloggen

  • Till Booli.se
  • Bostadsmarknad
  • Nytt på Booli.se
  • Tech
  • Inspiration
  • Om Bloggen

data

Hur påverkar balkong och solläge värdet på en lägenhet?

06 december 2019 av Henrik Almér

Vi tittar på avvikelse från Boolis värdering för att försöka förstå vilken påverkan tillgång till balkong och solläge har på priset på en lägenhet. Vi begränsar oss till Stockholms kommun och dataunderlaget är försäljningar under ett helår mellan 2018-06-01 och 2019-06-01.

Definitioner

Vi vill undersöka hur stora värderingsfel vi har givet att lägenheten i fråga har någon av nedanstående typer av balkonger.

  • Saknar balkong: lägenheten har ingen möjlighet till utomhusvistelse
  • Traditionell balkong: en vanlig balkonglåda
  • Terrass: en ovanligt stor balkong
  • Kungsbalkong: en balkong på översta våningen som sträcker sig över flera rum

Utöver det kommer vi också titta på hur söderläge påverkar felet i värderingen.

Läs in förberedd data

In [1]:
import pandas as pd

df = pd.read_csv('data/sthlm_apt_balcony.csv', index_col=0)
df = df[['lat', 'lng', 'soldDate', 'soldPrice', 'estimatedPrice',
         'listPrice', 'error', 'error_percent', 'abs_error',
         'abs_error_percent', 'objectType', 'description',
         'class', 'balkong', 'kungsbalkong', 'terrass']]
display(df.head())
display(df.shape)
         lat        lng    soldDate  soldPrice  estimatedPrice   listPrice  \
0  59.308500  18.027730  2016-06-01    4500000       4172111.0   4295000.0   
1  59.303594  18.099284  2016-06-01    3140000       3437682.0   2795000.0   
2  59.337643  18.088657  2016-06-01   14500000      13750012.0  15500000.0   
3  59.344835  18.046775  2016-06-01   12560000      11242438.0  12250000.0   
4  59.337617  18.054548  2016-06-01   17000000      12712843.0  16500000.0   

       error  error_percent  abs_error  abs_error_percent objectType  \
0  -327889.0      -0.072864   327889.0           0.072864   Lägenhet   
1   297682.0       0.094803   297682.0           0.094803   Lägenhet   
2  -749988.0      -0.051723   749988.0           0.051723   Lägenhet   
3 -1317562.0      -0.104901  1317562.0           0.104901   Lägenhet   
4 -4287157.0      -0.252186  4287157.0           0.252186   Lägenhet   

                                         description  class  balkong  \
0  Sjönära mini-3:a med stor balkong och fönster ...      1        1   
1  Stilren lägenhet i förening med låg avgift\n\n...      0        1   
2  3,5 rum (151 m2). I en av Östermalms vackraste...      1        1   
3  5 rum (133 m2). Nyligen totalrenoverad sekelsk...      1        1   
4  5,5 rum (153 m2). Attraktivt belägen hörnvånin...      1        1   

   kungsbalkong  terrass  
0             0        0  
1             0        0  
2             0        0  
3             0        0  
4             0        0  
(18476, 16)

Vi har ca 18 500 observationer av lägenhetsförsäljningar i Stockholms kommun under ett helår. För varje observation har vi information om koordinat, slutpris, värdering, felet i värderingen samt indikationer på om det finns balkong eller ej.

Vi har låtit en klassificerare avgöra om lägenheten har balkong baserat på innehållet i lägenhetsbeskrivningen. Utlåtandet från klassificeraren sparas i kolumnen class där värdet 1 innebär att det troligtvis finns en balkong eller annan möjlighet till utevistelse, och 0 innebär att det inte gör det.

För varje observation har vi också gjort en nyckelordssökning i ett försök att bedöma vilken typ av balkong det handlar om. Vi har sökt efter ”balkong”, ”kungsbalkong” och ”terrass”. Om vi har hittat att ordet förekommer i beskrivningen så har vi satt en 1:a i den kolumnen. Det finns exempel på när vi har klassificerat en bostad som att den saknar balkong, men då vi ändå hittar ordet balkong i texten. Se t.ex. rad 2 (index 1) i tabellen ovan. Beskrivningen för den bostaden finns nedan.

In [2]:
print(df.iloc[1]['description'])

Stilren lägenhet i förening med låg avgift

Välkommen till en mycket ljus och trivsam lägenhet där alla kvadratmeter optimalt utnyttjas. Lägenheten har genomgående smakfulla material- och färgval och den öppna planlösningen mellan vardagsrum och kök ger härliga sällskapsytor. Den franska balkongen bjuder på många tillfällen att öppna upp varma sommardagar. Här erbjuds även sängplats mot vardagsrum, ett sovrum, rymligt badrum med tvättpelare samt hall med goda avhängningsytor. Bra läge i Sjöstaden med närhet till kommunikationer, fantastiska promenadstråk, vatten, service, mataffärer, restauranger och skola/förskolor. Stabil förening med låg avgift!

Välkommen på visning!

img

Visa mer info om bostaden

img

I annonsen skriver man om den ”franska balkongen” vilket är orsaken till att nyckelordssökningen ger träff men vår balkongklassificerare svarar negativt. Det finns fler exempel på när klassificeraren kan ge negativt svar och ett eller flera av nyckelorden ändå förekommer i texten. T.ex. kan mäklaren skriva om ”bygglov för balkong”, ”gemensam balkong”, ”vädringsbalkong”, ”piskaltan” eller liknande.

Balkongklassificeraren har tränats på manuellt uppmärkt data och i korsvalidering visats ha en träffsäkerhet på ca 95 % korrekt klassificerade texter.

Nyckelordssökning för sollägen

In [3]:
import re

df['south_facing'] = df['description'].str.findall(
    r'söderläge', flags=re.IGNORECASE).apply(len) > 0

Vi försöker avgöra om en lägenhet har balkong i söderläge genom att söka efter om ordet ”söderläge” förekommer i beskrivningen. Detta är en ganska grov sökning som bygger på att mäklarna använder just det ordet och vi kommer troligtvis ha en stor del missar. Att utöka med fler ord i sökningen som t.ex. ”söder” skulle dock innebära problem med att vi matchar mot t.ex. ”Södermalm” och därmed får en större mängd false positives. Den här klassificeringen skulle man kunna göra mycket mer avancerad, men vi vill vi hålla det enkelt och nöjer oss så, med vetskap om att vi kommer ha många false negatives.

Filtrera outliers och titta på datan

In [4]:
# Filter outliers based on sale price
quantiles = df['soldPrice'].quantile([0.01, 0.99])
df = df[(df['soldPrice'] >= quantiles[0.01]) &
        (df['soldPrice'] <= quantiles[0.99])]

quantiles = df['error_percent'].quantile([0.01, 0.99])
df = df[(df['error_percent'] >= quantiles[0.01]) &
        (df['error_percent'] <= quantiles[0.99])]
In [5]:
df['error_percent'].hist(bins=20)
display("Median absolute error: {} %".format(
    df['abs_error_percent'].median() * 100))
display(df['error_percent'].describe())
'Median absolute error: 5.208096345514951 %'
count    17744.000000
mean         0.003862
std          0.080928
min         -0.206222
25%         -0.049679
50%          0.000436
75%          0.054955
max          0.250965
Name: error_percent, dtype: float64

Vi kan se att efter outlierfiltrering har våra värderingar ett medianfel på ca 5,2 % och en standardavvikelse på ca 8 %. Felen är någorlunda normalfördelade och det kan då antas att ca 68 % av värderingarna ligger inom en standardavvikelse från köpeskillingen.

Undersök korrelation med värderingsfel

In [8]:
import numpy as np

df['balcony_class'] = None
df.loc[df['class'] == 0,
       'balcony_class'] = 'Ingen balkong'
df.loc[(df['class'] == 1) &
       (df['kungsbalkong'] == 0) &
       (df['terrass'] == 0),
       'balcony_class'] = 'Traditionell balkong'

df.loc[(df['class'] == 1) &
       (df['kungsbalkong'] == 1),
       'balcony_class'] = 'Kungsbalkong'

df.loc[(df['class'] == 1) &
       (df['terrass'] == 1),
       'balcony_class'] = 'Terrass'

classified = df[df['balcony_class'] != None]
display(classified.groupby('balcony_class').agg(
    Antal=('error', len),
    Medianfel_SEK=('error', np.median),
    Medelfel_SEK=('error', np.mean),
    Medianfel_procent=('error_percent', np.median),
    Medelfel_procent=('error_percent', np.mean)
))

display(df.groupby('south_facing').agg(
    Antal=('error', len),
    Medianfel_SEK=('error', np.median),
    Medelfel_SEK=('error', np.mean),
    Medianfel_procent=('error_percent', np.median),
    Medelfel_procent=('error_percent', np.mean)
))
Antal Medianfel_SEK Medelfel_SEK Medianfel_procent Medelfel_procent
balcony_class
Ingen balkong 5740.0 44278.0 60151.721429 0.013212 0.017346
Kungsbalkong 112.0 -238170.5 -300963.357143 -0.050535 -0.051844
Terrass 1300.0 -48833.0 -123348.435385 -0.012143 -0.010061
Traditionell balkong 10592.0 -17183.5 -29175.233289 -0.004758 -0.001148
Antal Medianfel_SEK Medelfel_SEK Medianfel_procent Medelfel_procent
south_facing
False 16135.0 4778.0 -5603.077223 0.001333 0.004621
True 1609.0 -28798.0 -41894.593536 -0.008408 -0.003749

Värderingarna som analysen bygger på är gjorda utan att ta hänsyn till information om balkong. Vi har delat upp analysen i 4 klasser relaterat till balkong, och sedan gjort en kontroll av söderläge vs. icke söderläge.

Resultat

Vi kan se att vi övervärderar lägenheter som saknar balkong med ca 45 000 SEK i median. Lägenheter som har en traditionell balkong är däremot undervärderade med ca 20 000 SEK i median. Skillnaden i värderingsfelet mellan lägenheter med och utan balkong är ca 60 000 SEK. Sett till medelfelet är skillnaden större, ca 90 000 SEK. Utrycker man istället felet i procentenheter är skillnaden ca 1,9 % både i median och medel.

Vi kan också se att lyxigare möjlighet till utevistelse än en traditionell balkong är ännu mer undervärderade i vår värderingsmotor. För lägenheter med terrass undervärderar vi med 125 000 SEK i medel och lägenheter med kungsbalkong 300 000 SEK. Uttryckt i procentenheter blir undervärderingen ca 1% för terrass och ca 5 % för kungsbalkong, både sett till median och medel.

Lägenheter utan söderläge är i princip helt korrekt värderade, med ett medelfel nära 0 SEK. Lägenheter med söderläge är undervärderade med ca 30 000 SEK i median och 40 000 SEK i medel. Sett till procentuell avvikelse mellan de två grupperna är skillnaden ca 1 % både i median och medel.

Vi tar en till titt på hur felstatistiken ser ut för lägenheter med balkong i söderläge.

In [15]:
display(df[(df['south_facing'] == True) & (
    df['balcony_class'] == 'Traditionell balkong'
)].groupby('balcony_class').agg(
    Antal=('error', len),
    Medianfel_SEK=('error', np.median),
    Medelfel_SEK=('error', np.mean),
    Medianfel_procent=('error_percent', np.median),
    Medelfel_procent=('error_percent', np.mean)
))
Antal Medianfel_SEK Medelfel_SEK Medianfel_procent Medelfel_procent
balcony_class
Traditionell balkong 1388.0 -28085.5 -36579.447406 -0.008401 -0.003583

Vi kan se att skillnaden mot lägenheter utan balkong är ca 72 000 SEK i median och 96 000 SEK i medel. I procentenheter är skillnaden 2,1-2,2 % både i medel och median.

Kommentar

Det finns en del osäkerheter i den här analysen, klassificeraren som avgör om en lägenhet har möjlighet till utevistelse är bra men inte perfekt, och nyckelordssökning har uppenbara svagheter. Det som talar för att vi ändå kan lita på resultaten är att balkongklassificeraren är tillräckligt träffsäker och att volymerna i underlaget är stora. Nyckelordssökningen är bristfällig i det att den har en stor mängd false negatives, men rimligtvis borde andelen false positives vara liten givet de restriktiva sökningarna och därmed blir resultaten ovan ändå pålitliga.

Gruppen bostäder som har kungsbalkong är ganska liten, bara 112 stycken. Kungsbalkong kommer också per definition vara korrelerat med att lägenheten ligger på översta våningen och har utsikt i flera väderstreck, vilken gör att det finns fler faktorer än bara balkongen som kan göra att vår värdering slår fel. Det gör att resultaten för kungsbalkong kan ifrågasättas. Hade vi haft en kontrollgrupp att jämföra mot som bestod av lyxiga bostäder på översta våningen som saknar kungsbalkong hade resultaten blivit mer pålitliga, men det har vi tyvärr inte.

Det man kan ta med sig från den här analysen och säga med någorlunda säkerhet är att en värdering som görs utan hänsyn till balkong övervärderar de lägenheter som saknar balkong och undervärderar lägenheter som har balkong. Det kan tolkas som att det finns ett värde kopplat till balkongen. Median och medelfelen i värderingarna ligger ganska långt ifrån varandra, medan de procentuella felen ligger nära varandra. Det kan tolkas som att värdet på en balkong sätts relativt priset på bostaden, och inte kronor och ören.

Slutsats

En lägenhet med balkong kommer ofta säljas för 60 – 90 000 SEK mer än en lägenhet utan balkong. Om balkongen också är i söderläge ligger spannet mellan 70 och 100 000 SEK. Uttryckt i procentenheter är värdet av en balkong ca 1,9 % av slutpriset. Ligger balkongen också i söderläge är skillnaden istället ca 2,1 %.

Filed Under: Tech Tagged With: analys, balkong, data, tech, Värdering

Primary Sidebar

Tidigare inlägg

Så dyra är lägenheterna vid din tunnelbanestation

Idag är det enkelt att ta reda på vad ens granne sålde sin bostad för. Men vad kostar egentligen en lägenhet i snitt kring din närmsta tunnelbanestation? Hur mycket skiljer sig prisnivåerna åt längs linjerna? Och var får man mest kvadratmeter för pengarna? Idag släpper vi Tunnelbanekartan 2020 där du får svar! För femte året […]

Lånelöfte

Allt hetare budgivningar

Det är fler som vittnar om att budgivningar på småhus drar iväg i allt snabbare takt. Och att det är fart på landets budgivningar visar även våra siffror. Vi har valt att titta lite närmare på hur just budgivningarna har utvecklats under året. I början på året hade både lägenheter och småhus en stark utveckling. […]

Så fortsätter marknaden efter sommaren

För många brukar slutet av augusti vara en tid där sommarens ledighet övergår till vardag. Hängmattan byts till kontorsstolen och semesterlunket går över till rutiner. Men det är också en intressant tid för att se hur bostadsmarknaden utvecklas. Med hjälp av vår dagsfärska statistik har vi därför tagit fram en sammanfattning för dig som vill […]

Inredningsbloggar

  • Annehem
  • Förvaringsdrottningen
  • Hemmafixbloggen
  • Inredningsvis
  • Kråks stuga
  • Kreativ inredning
  • Miss Fixtrix

Copyright © 2023 · Genesis Sample på Genesis Framework · WordPress · Log in