# Least-squares fitting (LsqFit): fit a sum

**URL:** <https://discourse.julialang.org/t/least-squares-fitting-lsqfit-fit-a-sum/99479>\
**Category:** New to Julia\
**Created:** [May 27, 2023, 11:22am UTC](https://discourse.julialang.org/t/least-squares-fitting-lsqfit-fit-a-sum/99479 "2023-05-27T11:22:16Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![KingBis](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/kingbis/32/50275_2.png) [@KingBis](https://discourse.julialang.org/u/KingBis)\
**Post date:** [May 27, 2023, 11:22am UTC](https://discourse.julialang.org/t/least-squares-fitting-lsqfit-fit-a-sum/99479/1 "2023-05-27T11:22:16Z")

</div>

Dear community,

The code below fits the following model: sales = b1 / ranks^b2.

Given that sales are observed on a weekly basis (w) and ranks on a daily basis (t), how can I modify my code to fit the following model: sales\_w = Sum\_(t belong to week w) [b1 / ranks\_t^b2]

Thank you in advance for your help!

```julia
using DataFrames
using StatFiles #read stata file
using LsqFit #least-squares fitting 

### load data
df = DataFrame(load("Data/AB.dta"))
rank = df.rank
sales = df.sales
week = df.week

### Model 
# function to minimize
model(x, b) = b[1] ./ (x.^b[2])
# starting values
p0 = [10167, 0.45]
# fitting
fit = curve_fit(model, rank, sales, p0)

```

---

<div class="post-metadata">

**Author:** ![hendri54](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/hendri54/32/9621_2.png) [@hendri54](https://discourse.julialang.org/u/hendri54)\
**Post date:** [May 27, 2023, 12:45pm UTC](https://discourse.julialang.org/t/least-squares-fitting-lsqfit-fit-a-sum/99479/2 "2023-05-27T12:45:00Z")

</div>

```julia
using DataFrames

# Parameters
b1 = 3.0;
b2 = 1.5;
# There are 6 days in 2 weeks
sales = [2.0, 3.0];
df = DataFrame(:week => [1,2,1,2,1,2], :rank => collect(LinRange(1.0, 2.0, 6)));
gdf = combine(groupby(df, :week), :rank => (x -> sum(b1 ./ x .^ b2)) => :wkrank);

```

results in

```julia
2×2 DataFrame
 Row │ week wkrank
     │ Int64 Float64
─────┼────────────────
   1 │ 1 6.0533
   2 │ 2 4.82516

```

---

<div class="post-metadata">

**Author:** ![KingBis](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/kingbis/32/50275_2.png) [@KingBis](https://discourse.julialang.org/u/KingBis)\
**Post date:** [May 27, 2023, 8:22pm UTC](https://discourse.julialang.org/t/least-squares-fitting-lsqfit-fit-a-sum/99479/3 "2023-05-27T20:22:58Z")

</div>

Thank you!
